适用于 Java 的 AWS 开发工具包版本 2
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

创建、列出和删除 Amazon S3 存储桶

Amazon S3 中的每个对象(文件)必须位于存储桶中。存储桶表示对象的集合(容器)。每个存储桶必须具有一个唯一键(名称)。有关存储桶及其配置的详细信息,请参阅 Amazon S3 Developer Guide中的使用 Amazon S3 存储桶

注意

最佳实践

建议您对 Amazon S3 存储桶启用 AbortIncompleteMultipartUpload 生命周期规则。

该规则指示 Amazon S3 中止在启动后没有在指定天数内完成的分段上传。当超过设置的时间限制时,Amazon S3 将中止上传,然后删除未完成的上传数据。

有关更多信息,请参阅 Amazon S3 User Guide中的使用版本控制的存储桶的生命周期配置

注意

这些代码段假定您了解使用适用于 Java 的 AWS 开发工具包 2.0 中的内容,并且已使用设置用于开发的 AWS 凭证和区域中的信息配置默认 AWS 凭证。

创建存储桶

构建 CreateBucketRequest 并提供存储桶名称。将其传递到 S3ClientcreateBucket 方法。使用 S3Client 执行其他操作(例如列出或删除存储桶),如后面的示例中所示。

导入

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.CreateBucketConfiguration; import software.amazon.awssdk.services.s3.model.CreateBucketRequest; import software.amazon.awssdk.services.s3.model.DeleteBucketRequest; import software.amazon.awssdk.services.s3.model.ListBucketsRequest; import software.amazon.awssdk.services.s3.model.ListBucketsResponse;

代码

首先,创建 S3Client

Region region = Region.US_WEST_2; S3Client s3 = S3Client.builder().region(region).build();

建立“创建存储桶请求”。

Region region = Region.US_WEST_2; S3Client s3 = S3Client.builder().region(region).build(); String bucket = "bucket" + System.currentTimeMillis(); System.out.println(bucket); // Create bucket CreateBucketRequest createBucketRequest = CreateBucketRequest .builder() .bucket(bucket) .createBucketConfiguration(CreateBucketConfiguration.builder() .locationConstraint(region.id()) .build()) .build(); s3.createBucket(createBucketRequest);

请参阅 GitHub 上的完整示例

列出存储桶

构建 ListBucketsRequest。使用 S3ClientlistBuckets 方法检索存储桶列表。如果请求成功,将返回 ListBucketsResponse。使用此响应对象可检索存储桶列表。

导入

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.CreateBucketConfiguration; import software.amazon.awssdk.services.s3.model.CreateBucketRequest; import software.amazon.awssdk.services.s3.model.DeleteBucketRequest; import software.amazon.awssdk.services.s3.model.ListBucketsRequest; import software.amazon.awssdk.services.s3.model.ListBucketsResponse;

代码

首先,创建 S3Client

Region region = Region.US_WEST_2; S3Client s3 = S3Client.builder().region(region).build();

建立“列出存储桶请求”

// List buckets ListBucketsRequest listBucketsRequest = ListBucketsRequest.builder().build(); ListBucketsResponse listBucketsResponse = s3.listBuckets(listBucketsRequest); listBucketsResponse.buckets().stream().forEach(x -> System.out.println(x.name()));

请参阅 GitHub 上的完整示例

删除存储桶

在删除 Amazon S3 存储桶前,必须先确保存储桶为空,否则该服务将返回错误。如果您的存储桶受版本控制,则必须同时删除位于存储桶中的所有受版本控制对象。

删除存储桶中的对象

构建 ListObjectsV2Request 并使用 S3ClientlistObjects 方法检索存储桶中的对象的列表。然后,在每个对象上使用 deleteObject 方法以删除它。

导入

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.CreateBucketConfiguration; import software.amazon.awssdk.services.s3.model.CreateBucketRequest; import software.amazon.awssdk.services.s3.model.DeleteBucketRequest; import software.amazon.awssdk.services.s3.model.ListBucketsRequest; import software.amazon.awssdk.services.s3.model.ListBucketsResponse;

代码

首先,创建 S3Client

Region region = Region.US_WEST_2; S3Client s3 = S3Client.builder().region(region).build();
DeleteBucketRequest deleteBucketRequest = DeleteBucketRequest.builder().bucket(bucket).build(); s3.deleteBucket(deleteBucketRequest);

请参阅 GitHub 上的完整示例

删除空存储桶

使用存储桶名称构建 DeleteBucketRequest 并将其传递到 S3ClientdeleteBucket 方法。

导入

import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.CreateBucketConfiguration; import software.amazon.awssdk.services.s3.model.CreateBucketRequest; import software.amazon.awssdk.services.s3.model.DeleteBucketRequest; import software.amazon.awssdk.services.s3.model.ListBucketsRequest; import software.amazon.awssdk.services.s3.model.ListBucketsResponse;

代码

首先,创建 S3Client

DeleteBucketRequest deleteBucketRequest = DeleteBucketRequest.builder().bucket(bucket).build(); s3.deleteBucket(deleteBucketRequest);

删除存储桶中的所有对象。

DeleteBucketRequest deleteBucketRequest = DeleteBucketRequest.builder().bucket(bucket).build(); s3.deleteBucket(deleteBucketRequest);

请参阅 GitHub 上的完整示例