创建桶
功能说明
桶(Bucket)是用于存储对象(Object)的容器,所有的对象都必须隶属于某个桶。您可以通过createBucket接口创建桶。
代码示例
public void createBucket() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("createBucket");
Bucket createdBucket = s3Client.createBucket(bucket);
System.out.println("Bucket Name:" + createdBucket.getName());
}请求参数
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
返回结果
| 参数 | 类型 | 说明 |
|---|---|---|
| Bucket | Bucket | 桶信息 |
关于Bucket一些说明
| 参数 | 类型 | 说明 |
|---|---|---|
| name | String | 桶名称 |
获取桶列表
功能说明
桶(Bucket)是用于存储对象(Object)的容器,所有的对象都必须隶属于某个桶。您可以通过listBuckets接口获取桶列表信息。
代码示例
public void listBuckets() throws AmazonClientException {
System.out.println("listBuckets");
List<Bucket> buckets = s3Client.listBuckets();
for (Bucket bucket : buckets) {
System.out.println("Bucket Name:" + bucket.getName());
System.out.println("Bucket Creation Date:" + bucket.getCreationDate());
System.out.println("Bucket Owner:" + bucket.getOwner());
}
}返回结果
| 参数 | 类型 | 说明 |
|---|---|---|
| buckets | List<Bucket> | 桶信息列表 |
关于Bucket一些说明
| 参数 | 类型 | 说明 |
|---|---|---|
| name | String | 桶名称 |
| creationDate | Date | 桶创建日期 |
| owner | Owner | 桶的owner |
判断桶是否存在
功能说明
桶(Bucket)是用于存储对象(Object)的容器,所有的对象都必须隶属于某个桶。您可以使用 doesBucketExist 接口判断桶是否存在。
代码示例
public void doesBucketExist() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("doesBucketExist");
boolean exists = s3Client.doesBucketExistV2(bucket);
if (exists) {
System.out.printf("Bucket %s already exists.\n", bucket);
} else {
System.out.printf("Bucket %s not exists.\n", bucket);
}
}请求参数
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
返回结果
| 参数 | 类型 | 说明 |
|---|---|---|
| exists | boolean | 桶是否存在 |
删除桶
功能说明
桶(Bucket)是用于存储对象(Object)的容器,所有的对象都必须隶属于某个桶。您可以通过deleteBucket 接口删除桶。删除一个桶前,需要先删除该桶中的全部对象(包括对象版本)。
代码示例
public void deleteBucket() throws AmazonClientException {
String bucket = "<your-bucket-name>";
s3Client.deleteBucket(bucket);
}请求参数
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
设置桶访问权限
功能说明
桶(Bucket)是用于存储对象(Object)的容器,所有的对象都必须隶属于某个桶。您可以通过setBucketAcl 接口设置桶的访问权限。桶访问权限包含了CannedAccesssControlList 与AccessControlList 两种格式。CannedAccesssControlList 提供了预定义的权限控制,如私有读写,公共读私有写,公共读写,AccessControlList 提供了更细致的权限控制,可自定义更多权限控制。用户在设置 bucket 的 ACL 之前需要具备 WRITE_ACP 权限。
代码示例
CannedAccesssControlList
public void setBucketAcl1() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("setBucketAcl");
s3Client.setBucketAcl(bucket, CannedAccessControlList.PublicRead);
System.out.println("setBucketAcl success");
}AccessControlList
public void setBucketAcl2() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("setBucketAcl");
// 增加用户exampleuser的Write权限
AccessControlList controlList = s3Client.getBucketAcl(bucket);
CanonicalGrantee canonicalGrantee = new CanonicalGrantee("exampleuser");//开启用户exampleuser的Write权限
controlList.grantPermission(canonicalGrantee,Permission.Write);
s3Client.setBucketAcl(bucket, controlList);
System.out.println("setBucketAcl success");
}请求参数
CannedAccesssControlList
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
| CannedAccessControlList | CannedAccessControlList | 桶权限 | 是 |
关于 CannedAccessControlList 的说明:
| 参数 | 说明 |
|---|---|
| CannedAccessControlList.Private | 私有读写 |
| CannedAccessControlList.PublicRead | 公共读私有写 |
| CannedAccessControlList.PublicReadWrite | 公共读写 |
AccessControlList
使用 AccessControlList 设置桶访问权限时,可以设置特定用户对桶的访问权限。桶的 AccessControlList 权限如下表:
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
| controlList | AccessControlList | 桶权限 | 是 |
在 AccessControlList 中可通过 grantAllPermission 传入 Grant 设置权限,Grant 中关于Permission说明如下:
| 参数 | 说明 |
|---|---|
| Permission.Read | 允许列出桶中的对象 |
| Permission.Write | 允许创建、覆盖、删除桶中的对象 |
| Permission.ReadAcp | 允许获取桶的ACL信息 |
| Permission.WriteAcp | 允许修改桶的ACL信息 |
| Permission.FullControl | 获得READ、WRITE、READ_ACP、WRITE_ACP权限 |
获取桶访问权限
功能说明
桶(Bucket)是用于存储对象(Object)的容器,所有的对象都必须隶属于某个桶。您可以通过getBucketAcl接口获取桶的访问权限。
代码示例
public void getBucketAcl() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("getBucketAcl");
AccessControlList controlList = s3Client.getBucketAcl(bucket);
List<Grant> grants = controlList.getGrantsAsList();
System.out.println("getBucketAcl: owner=" + controlList.getOwner());
for (Grant grant: grants){
System.out.println("getBucketAcl: grantee=" + grant.getGrantee().getIdentifier()
+ ", permission=" + grant.getPermission());
}
}请求参数
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
返回结果
返回的 AccessControlList 中包含的属性:
| 参数 | 类型 | 说明 |
|---|---|---|
| owner | Owner | 桶的owner信息 |
| grants | List<Grant> | grants 授权信息,包含了每个用户与其权限Permission。 |
关于 AccessControlList 中的访问权限说明可参考 设置桶访问权限 一节。
设置桶策略
功能说明
桶策略(Bucket Policy)可以灵活地配置用户各种操作和访问资源的权限。如果桶已经被设置了policy,则新的policy会覆盖原有的policy。关于 policy 的具体说明请参考 桶策略说明 。
您可以使用 setBucketPolicy 接口设定桶策略,您可以执行以下操作:
使用 JSON 格式的文本字符串直接指定策略。
使用 Policy 类构建策略,再转换为 JSON 格式的字符串。
您可以使用 Policy 类构建策略,免除设置文本字符串出现格式错误的麻烦,构建完成后使用 toJson 方法可以获取 JSON 策略文本。
policy的示例如下:
{
"Id":"PolicyId",
"Version":"2012-10-17",
"Statement":[
{
"Sid":"ExampleStatementID1",
"Principal":{
"AWS":[
"arn:aws:iam:::user/userId",
"arn:aws:iam:::user/userName"
]
},
"Effect":"Allow",
"Action":[
"s3:ListBucket",
"s3:CreateBucket"
],
"Resource":[
"arn:aws:iam:::exampleBucket"
],
"Condition":"some conditions"
},
......
]
}Statement的内容说明如下:
| 元素 | 描述 | 是否必要 |
|---|---|---|
| Sid | statement Id,可选关键字,描述statement的字符串 | 否 |
| Principal | 可选关键字,被授权人,指定本条statement权限针对的Domain以及User,支持通配符“*”,表示所有用户(匿名用户)。当对Domain下所有用户授权时,Principal格式为arn:aws:iam:::user/*。当对某个User进行授权时,Principal格式为arn:aws:iam:::user/<your-user-name> | 可选,Principal与NotPrincipal选其一 |
| NotPrincipal | 可选关键字,不被授权人,statement匹配除此之外的其他人。取值同Principal | 可选,NotPrincipal与Principal选其一 |
| Action | 可选关键字,指定本条statement作用的操作,Action字段为对象存储支持的所有操作集合,以字符串形式表示,不区分大小写。支持通配符“*”,表示该资源能进行的所有操作。例如:"Action":["s3:List*", "s3:Get*"] | 可选,Action与NotAction选其一 |
| NotAction | 可选关键字,指定一组操作,statement匹配除该组操作之外的其他操作。 取值同Action | 可选,NotAction与Action选其一 |
| Effect | 必选关键字,指定本条statement的权限是允许还是拒绝,Effect的值必须为Allow或者Deny | 必选 |
| Resource | 可选关键字,指定statement起作用的一组资源,支持通配符”*”,表示所有资源 | 可选,Resource与NotResource选其一 |
| NotResource | 可选关键字,指定一组资源,statement匹配除该组资源之外的其他资源。 取值同Resource | 可选,NotResource与Resource选其一 |
| Condition | 可选关键字,本条statement生效的条件 | 可选 |
代码示例
使用 JSON 格式的文本字符串直接指定策略。
public void setBucketPolicy1() throws AmazonClientException {
// 以下示例策略允许exampleuser1, exampleuser2用户可读取桶内对象。
String bucket = "<your-bucket-name>";
System.out.println("setBucketPolicy");
String bucketPolicy = "{\n" +
" \"Version\": \"2012-10-17\",\n" +
" \"Statement\": [{\n" +
" \"Sid\": \"1\",\n" +
" \"Effect\": \"Allow\",\n" +
" \"Principal\": {\"AWS\": [\n" +
" \"arn:aws:iam:::user/exampleuser1\",\n" +
" \"arn:aws:iam:::user/exampleuser2\"\n" +
" ]},\n" +
" \"Action\": [\"s3:GetObject\"],\n" +
" \"Resource\": [\"arn:aws:s3:::" + bucket + "/*\"]\n" +
" }]\n" +
" }";
s3Client.setBucketPolicy(bucket, bucketPolicy);
}使用 Policy 类构建策略,再转换为 JSON 格式的字符串。
public void setBucketPolicy2() throws AmazonClientException {
// 以下示例策略允许exampleuser1, exampleuser2用户可读取桶内对象。
String bucket = "<your-bucket-name>";
System.out.println("setBucketPolicy");
Policy bucketPolicy = new Policy().withStatements(
new Statement(Statement.Effect.Allow)//指定本条桶策略描述的权限为允许请求
.withPrincipals(Principal.AllUsers)
.withPrincipals(new Principal("AWS", "arn:aws:iam:::user/exampleuser1"), //对exampleuser1用户生效
new Principal("AWS", "arn:aws:iam:::user/exampleuser2"))//对exampleuser2用户生效
.withActions(S3Actions.GetObject)//操作为GetObject
.withResources(new Resource("arn:aws:s3:::" + bucket + "/*")));//指定资源为桶内所有对象
s3Client.setBucketPolicy(bucket, bucketPolicy.toJson());
}参数说明
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
| bucketPolicy | String | 桶策略的JSON格式字符串 | 是 |
获取桶策略
功能说明
桶策略(Bucket Policy)可以灵活地配置用户各种操作和访问资源的权限。您可以使用 getBucketPolicy 接口获取桶策略。
代码示例
public void getBucketPolicy() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("getBucketPolicy");
BucketPolicy policy = s3Client.getBucketPolicy(bucket);
System.out.println("getBucketPolicy success, " + policy.getPolicyText());
}参数说明
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
返回结果
| 参数 | 类型 | 说明 |
|---|---|---|
| policy | BucketPolicy | 桶策略 |
关于返回的 BucketPolicy 的具体说明请参考 桶策略说明 。
删除桶策略
功能说明
桶策略(Bucket Policy)可以灵活地配置用户各种操作和访问资源的权限,您可以使用 deleteBucketPolicy 接口删除桶策略。
代码示例
public void deleteBucketPolicy() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("deleteBucketPolicy");
s3Client.deleteBucketPolicy(bucket);
}请求参数
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
设置桶生命周期配置
功能说明
生命周期管理可以通过设置规则实现自动清理过期的对象,优化存储空间。本文介绍如何设置桶(Bucket)生命周期规则。您可以通过setBucketLifecycleConfiguration操作可以设置桶的生命周期规则,规则可以通过匹配对象key前缀、标签的方法设置当前版本或者历史版本对象的过期时间,对象过期后会被自动删除。
桶的版本控制状态必须处于Enabled或者Suspended,历史版本对象过期时间配置才能生效。每次执行setBucketLifecycleConfiguration操作会覆盖桶中已存在的生命周期规则。
代码示例
public void setBucketLifecycleConfiguration() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("setBucketLifecycleConfiguration");
BucketLifecycleConfiguration config = new BucketLifecycleConfiguration();
List<BucketLifecycleConfiguration.Rule> rules = new ArrayList<BucketLifecycleConfiguration.Rule>();
// mtime rule
BucketLifecycleConfiguration.Transition transition = new BucketLifecycleConfiguration.Transition();
transition.setDays(1);
transition.setStorageClass(StorageClass.StandardInfrequentAccess);
// atime rule
BucketLifecycleConfiguration.AtimeTransition aTimeTransition = new BucketLifecycleConfiguration.AtimeTransition();
aTimeTransition.setDays(3);
aTimeTransition.setStorageClass(StorageClass.StandardInfrequentAccess);
aTimeTransition.setTransToStandard(true);
aTimeTransition.setNoTransMaxSize(1024*1024);
// incomplete upload rule
AbortIncompleteMultipartUpload abort = new AbortIncompleteMultipartUpload();
abort.setDaysAfterInitiation(20);
BucketLifecycleConfiguration.Rule rule = new BucketLifecycleConfiguration.Rule();
rule.setId("haha");
rule.setExpirationInDays(10);
rule.setAbortIncompleteMultipartUpload(abort);
rule.setStatus(BucketLifecycleConfiguration.ENABLED);
// ncv过期时间
rule.setNoncurrentVersionExpiration(new BucketLifecycleConfiguration.NoncurrentVersionExpiration().withDays(365));
// 设置应用范围,可以指定前缀或对象标签
LifecycleFilterPredicate predicate = new LifecyclePrefixPredicate("abc/");
rule.setFilter(new LifecycleFilter(predicate));
//LifecycleFilterPredicate predicate = new LifecycleTagPredicate(new Tag("your-key", "your-value"));
//rule.setFilter(new LifecycleFilter(predicate));
rule.addTransition(transition);
rule.addAtimeTransition(aTimeTransition);
rules.add(rule);
config.setRules(rules);
SetBucketLifecycleConfigurationRequest req = new SetBucketLifecycleConfigurationRequest(bucket, config);
s3Client.setBucketLifecycleConfiguration(req);
System.out.println("setBucketLifecycleConfiguration success");
}请求参数
SetBucketLifecycleConfigurationRequest 的参数说明:
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
| BucketLifecycleConfiguration | BucketLifecycleConfiguration | 生命周期设置 | 是 |
关于生命周期规则 Rule 的说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| id | String | 规则ID |
| status | String(Enabled|Disabled) | 是否启用规则 |
| expirationInDays | int | 文件过期时间 |
| noncurrentVersionExpiration | NoncurrentVersionExpiration | 历史版本过期时间 |
| abortIncompleteMultipartUpload | AbortIncompleteMultipartUpload | 未完成上传的分片过期时间 |
| transition | Transition | 文件转换到低频存储规则(距离修改时间) |
| atimeTransition | AtimeTransition | 文件转换到低频存储规则(距离访问时间) |
| filter | LifecycleFilterPredicate | 应用范围,可以指定前缀或对象标签 |
Transition:
| 参数 | 类型 | 说明 |
|---|---|---|
| days | int | 转换过期天数,默认-1,表示不转换 |
| storageClass | StorageClass | 要转换的存储类型 |
AtimeTransition:
| 参数 | 类型 | 说明 |
|---|---|---|
| days | int | 转换过期天数,默认-1,表示不转换 |
| storageClass | StorageClass | 要转换的存储类型 |
| transToStandard | boolean | 是否在下次访问时转换回标准存储,默认false表示不转回标准存储 |
| noTransMaxSize | long | 低于此大小的文件不进行转换,默认-1表示所有文件都转换 |
NoncurrentVersionExpiration:
| 参数 | 类型 | 说明 |
|---|---|---|
| days | int | 过期天数 |
注意:atime规则只在官网的sdk提供,AWS S3没有atime规则。只有部分资源池支持atime规则。
获取桶生命周期配置
功能说明
生命周期管理可以通过设置规则实现自动清理过期的对象,优化存储空间。本文介绍如何查看桶(Bucket)的生命周期规则。
代码示例
public void getBucketLifecycleConfiguration() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("getBucketLifecycleConfiguration");
BucketLifecycleConfiguration config = s3Client.getBucketLifecycleConfiguration(bucket);
List<BucketLifecycleConfiguration.Rule> rules = config.getRules();
for (BucketLifecycleConfiguration.Rule rule: rules){
System.out.println("getBucketLifecycleConfiguration: " + rule.getId());
System.out.println("getBucketLifecycleConfiguration expire: " +
rule.getExpirationInDays());
if(rule.getAbortIncompleteMultipartUpload() != null){
System.out.println("getBucketLifecycleConfiguration abort: " +
rule.getAbortIncompleteMultipartUpload().getDaysAfterInitiation());
}
if(rule.getNoncurrentVersionExpiration() != null) {
System.out.println("getBucketLifecycleConfiguration ncv expire days: " +
rule.getNoncurrentVersionExpiration().getDays());
}
LifecycleFilterPredicate predicate = rule.getFilter().getPredicate();
if (predicate instanceof LifecyclePrefixPredicate) {
LifecyclePrefixPredicate prefixPredicate = (LifecyclePrefixPredicate)predicate;
System.out.println("getBucketLifecycleConfiguration prefix filter: " +
prefixPredicate.getPrefix());
}
if (rule.getTransitions() != null) {
for (BucketLifecycleConfiguration.Transition tran : rule.getTransitions()) {
System.out.println("getBucketLifecycleConfiguration tran: " + tran.getStorageClassAsString() + "," +
tran.getDays());
}
}
if (rule.getAtimeTransitions() != null) {
for (BucketLifecycleConfiguration.AtimeTransition tran: rule.getAtimeTransitions()){
System.out.println("getBucketLifecycleConfiguration atime tran: " + tran.getStorageClassAsString() + "," +
tran.getDays() + "," + tran.getTransToStandard() + "," + tran.getNoTransMaxSize());
}
}
}
}请求参数
GetBucketLifecycleConfigurationRequest 的参数说明:
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
返回参数
| 参数 | 类型 | 说明 |
|---|---|---|
| BucketLifecycleConfiguration | BucketLifecycleConfiguration | 桶生命周期设置 |
关于 BucketLifecycleConfiguration 的生命周期说明可参考 设置桶生命周期 一节。
删除桶生命周期配置
功能说明
生命周期管理可以通过设置规则实现自动清理过期的对象,优化存储空间。本文介绍如何删除桶(Bucket)生命周期规则。
代码示例
public void deleteBucketLifecycleConfiguration() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("deleteBucketLifecycleConfiguration");
s3Client.deleteBucketLifecycleConfiguration(bucket);
System.out.println("deleteBucketLifecycleConfiguration success");
}请求参数
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
设置桶跨域访问配置
功能说明
跨域资源共享 (CORS) 定义了在一个域中加载的客户端 Web 应用程序与另一个域中的资源交互的方式。利用 CORS 支持,您可以构建丰富的客户端 Web 应用程序,同时可以选择性地允许跨源访问您的资源。您可以通过setBucketCrossOriginConfiguration接口设置桶的跨域访问配置。
示例代码
public void setBucketCrossOriginConfiguration() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("setBucketCrossOriginConfiguration");
List<CORSRule.AllowedMethods> rule2AM = new ArrayList<>();
rule2AM.add(CORSRule.AllowedMethods.PUT);
rule2AM.add(CORSRule.AllowedMethods.GET);
rule2AM.add(CORSRule.AllowedMethods.HEAD);
rule2AM.add(CORSRule.AllowedMethods.POST);
rule2AM.add(CORSRule.AllowedMethods.DELETE);
CORSRule rule = new CORSRule().withId("CORSRule").withAllowedMethods(rule2AM)
.withAllowedOrigins(Arrays.asList("*"))
.withExposedHeaders(Arrays.asList("x-amz-server-side-encryption", "ETag", "x-amz-request-id", "Date",
"Content-Length", "Accept-Ranges", "Access-Control-Allow-Origin"))
.withAllowedHeaders(Arrays.asList("*"))
.withMaxAgeSeconds(600);
List<CORSRule> rules = new ArrayList<>();
rules.add(rule);
BucketCrossOriginConfiguration config = new BucketCrossOriginConfiguration();
config.setRules(rules);
s3Client.setBucketCrossOriginConfiguration(bucket, config);
System.out.println("setBucketCrossOriginConfiguration success");
}请求参数
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
| BucketCrossOriginConfiguration | BucketCrossOriginConfiguration | 跨域访问规则 | 是 |
关于BucketCrossOriginConfiguration一些说明
| 参数 | 说明 |
|---|---|
| AllowedMethods | 允许的请求方法 |
| AllowedOrigins | 允许的请求源 |
| AllowedHeaders | 允许的请求头 |
| ExposedHeaders | 允许返回的Response Header |
| MaxAgeSeconds | 跨域请求结果的缓存时间 |
获取桶跨域访问配置
功能说明
跨域资源共享 (CORS) 定义了在一个域中加载的客户端 Web 应用程序与另一个域中的资源交互的方式。利用 CORS 支持,您可以构建丰富的客户端 Web 应用程序,同时可以选择性地允许跨源访问您的资源。您可以通过getBucketCrossOriginConfiguration接口获取桶跨域访问配置。
代码示例
public void getBucketCrossOriginConfiguration() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("getBucketCrossOriginConfiguration");
BucketCrossOriginConfiguration config = s3Client.getBucketCrossOriginConfiguration(bucket);
List<CORSRule> rules = config.getRules();
for (CORSRule rule: rules){
System.out.println("getBucketCrossOriginConfiguration: " + rule.getAllowedHeaders());
System.out.println("getBucketCrossOriginConfiguration: " + rule.getAllowedOrigins());
System.out.println("getBucketCrossOriginConfiguration: " + rule.getAllowedMethods());
System.out.println("getBucketCrossOriginConfiguration: " + rule.getExposedHeaders());
System.out.println("getBucketCrossOriginConfiguration: " + rule.getMaxAgeSeconds());
}
}请求参数
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
返回结果
| 参数 | 类型 | 说明 |
|---|---|---|
| BucketCrossOriginConfiguration | BucketCrossOriginConfiguration | 跨域访问规则 |
关于BucketCrossOriginConfiguration一些说明
| 参数 | 说明 |
|---|---|
| AllowedMethods | 允许的请求方法 |
| AllowedOrigins | 允许的请求源 |
| AllowedHeaders | 允许的请求头 |
| ExposedHeaders | 允许返回的Response Header |
| MaxAgeSeconds | 跨域请求结果的缓存时间 |
删除桶跨域访问配置
功能说明
跨域资源共享 (CORS) 定义了在一个域中加载的客户端 Web 应用程序与另一个域中的资源交互的方式。利用 CORS 支持,您可以构建丰富的客户端 Web 应用程序,同时可以选择性地允许跨源访问您的资源。您可以通过deleteBucketCrossOriginConfiguration接口删除桶跨域访问配置。
代码示例
public void deleteBucketCrossOriginConfiguration() throws AmazonClientException{
String bucket = "<your-bucket-name>";
System.out.println("deleteBucketCrossOriginConfiguration");
s3Client.deleteBucketCrossOriginConfiguration(bucket);
System.out.println("deleteBucketCrossOriginConfiguration success");
}请求参数
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
设置桶版本控制状态
功能说明
通过媒体存储提供的版本控制,您可以在一个桶中保留多个对象版本。例如,image.jpg(版本1)和image.jpg(版本2)。如果您希望防止自己意外覆盖和删除版本,或存档对象,以便您可以检索早期版本的对象,您可以开启版本控制功能。
开启版本控制
对桶中的所有对象启用版本控制,之后每个添加到桶中的对象都会被设置一个唯一的version id。
暂停版本控制
对桶中的所有对象暂停版本控制,之后每个添加到桶中的对象的version ID会被设置为null。桶开启版本控制功能之后,无法再关闭该功能,只能暂停。
您可以使用 setBucketVersioningConfiguration 接口开启或暂停版本控制。
代码示例
public void setBucketVersioningConfiguration() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("setBucketVersioningConfiguration");
BucketVersioningConfiguration config = new BucketVersioningConfiguration();
config.setStatus(BucketVersioningConfiguration.ENABLED);
SetBucketVersioningConfigurationRequest request = new SetBucketVersioningConfigurationRequest(bucket, config);
s3Client.setBucketVersioningConfiguration(request);
System.out.println("setBucketVersioningConfiguration success");
}请求参数
SetBucketVersioningConfigurationRequest 的参数说明:
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
| BucketVersioningConfiguration | BucketVersioningConfiguration | 版本控制设置 | 是 |
关于BucketVersioningConfiguration一些说明
| 参数 | 说明 |
|---|---|
| BucketVersioningConfiguration.ENABLED | 开启版本控制 |
| BucketVersioningConfiguration.SUSPENDED | 暂停版本控制 |
获取桶版本控制状态
功能说明
通过媒体存储提供的版本控制,您可以在一个桶中保留多个对象版本。您可以使用 getBucketVersioningConfiguration接口获取版本控制配置。
代码示例
public void getBucketVersioningConfiguration() throws AmazonClientException {
String bucket = "<your-bucket-name>";
System.out.println("getBucketVersioningConfiguration");
BucketVersioningConfiguration config = s3Client.getBucketVersioningConfiguration(bucket);
System.out.println("getBucketVersioningConfiguration success, " + config.getStatus());
}参数说明
| 参数 | 类型 | 说明 | 是否必要 |
|---|---|---|---|
| bucket | String | 桶名称 | 是 |
返回结果
| 参数 | 类型 | 说明 |
|---|---|---|
| BucketVersioningConfiguration | BucketVersioningConfiguration | 桶版本控制 |
关于BucketVersioningConfiguration一些说明。
| 参数 | 说明 |
|---|---|
| BucketVersioningConfiguration.ENABLED | 开启版本控制 |
| BucketVersioningConfiguration.SUSPENDED | 暂停版本控制 |
| BucketVersioningConfiguration.OFF | 关闭版本控制 |