OBS JAVA SDK Demo:设置桶策略
【摘要】 1 背景介绍OBS桶策略可以给特定用户设置特定的权限。下面代码展示通过JAVA SDK给用户桶设置高级桶策略。2 代码展示需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。前提条件:已创建OBS桶,例如my-bucket123设置的桶策略为:给用...
1 背景介绍
OBS桶策略可以给特定用户设置特定的权限。下面代码展示通过JAVA SDK给用户桶设置高级桶策略。
2 代码展示
需要先下载OBS最新的JAVA SDK,参考官网链接:https://developer.huaweicloud.com/sdk?OBS,并在自己的项目中导入SDK中的JAR包。
前提条件:已创建OBS桶,例如my-bucket123
设置的桶策略为:给用户userB给予桶的所有权限和桶内所有对象的读权限
桶策略格式如下,其中domain和user请根据实际账号ID和用户ID进行配置:
{
"Statement": [
{
"Sid": "Stmt1375240018062",
"Action": [
"*"
],
"Effect": "Allow",
"Resource": "my-bucket123",
"Principal": {
"ID": [
"domain/c41**************************8cf:user/053**************************2c4 "
]
}
},
{
"Sid": "Stmt1375240018063",
"Action": [
"Get*"
],
"Effect": "Allow",
"Resource": "my-bucket123/*",
"Principal": {
"ID": [
"domain/c41**************************8cf:user/053**************************2c4 "
]
}
}
]
}
Demo代码如下:
package samples_java;
import com.obs.services.ObsClient;
import com.obs.services.ObsConfiguration;
import com.obs.services.exception.ObsException;
import java.io.IOException;
public class BucketTestSample {
private static final String endPoint = "XXX";
private static final String ak = "XXX";
private static final String sk = "XXX";
private static ObsClient obsClient;
private static String bucketName = "my-bucket123";
public static void main(String[] args)
throws IOException {
ObsConfiguration config = new ObsConfiguration();
config.setSocketTimeout(30000);
config.setConnectionTimeout(10000);
config.setEndPoint(endPoint);
try {
obsClient = new ObsClient(ak, sk, config);
String Policy = "{\"Statement\":[{\"Sid\":\"Stmt1375240018062\",\"Action\":[\"*\"],\"Effect\":\"Allow\",\"Resource\":\"my-bucket123\",\"Principal\":{\"ID\":[\"domain/c41**************************8cf:user/053**************************2c4\"]}},{\"Sid\":\"Stmt1375240018063\",\"Action\":[\"Get*\"],\"Effect\":\"Allow\",\"Resource\":\"my-bucket123/*\",\"Principal\":{\"ID\":[\"domain/c41**************************8cf:user/053**************************2c4\"]}}]}";
obsClient.setBucketPolicy(bucketName,Policy);
} catch (ObsException e) {
System.out.println("Response Code: " + e.getResponseCode());
System.out.println("Error Message: " + e.getErrorMessage());
System.out.println("Error Code: " + e.getErrorCode());
System.out.println("Request ID: " + e.getErrorRequestId());
System.out.println("Host ID: " + e.getErrorHostId());
} finally {
if (obsClient != null) {
try {
obsClient.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
}
}
3 效果展示
设置后的桶策略如下:
userB在桶内上传文件失败(没有权限),下载文件成功
4 附录
OBS JAVA SDK使用,官网参考链接:https://support.huaweicloud.com/sdkreference-obs/obs_02_0001.html
更多桶策略的具体格式(JSON格式字符串)请参考《对象存储服务API参考》:https://support.huaweicloud.com/api-obs/zh-cn_topic_0100846742.html
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)