创建、列出和删除Amazon S3桶 - Amazon SDK for Java
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

现在,您可以使用Amazon S3转移经理(开发人员预览版)中的Amazon SDK for Java2.x 用于加速文件传输。试试一下然后告诉我们您的想法!顺便说一句,Amazon SDK for Java正在招聘团队软件开发工程师

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建、列出和删除Amazon S3桶

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

注意

最佳实践

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

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

有关更多信息,请参阅 。使用版本控制的存储桶生命周期配置中的Amazon Simple Storage Service用户指南。

注意

这些代码片段假设您了解基本资料,并且已配置默认值Amazon使用中的信息的凭据设置默认凭据和区域.

创建存储桶

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

导入

import software.amazon.awssdk.core.waiters.WaiterResponse; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.*; import software.amazon.awssdk.services.s3.waiters.S3Waiter;

代码

首先创建一个 S3Client。

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

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

// Create a bucket by using a S3Waiter object public static void createBucket( S3Client s3Client, String bucketName) { try { S3Waiter s3Waiter = s3Client.waiter(); CreateBucketRequest bucketRequest = CreateBucketRequest.builder() .bucket(bucketName) .build(); s3Client.createBucket(bucketRequest); HeadBucketRequest bucketRequestWait = HeadBucketRequest.builder() .bucket(bucketName) .build(); // Wait until the bucket is created and print out the response WaiterResponse<HeadBucketResponse> waiterResponse = s3Waiter.waitUntilBucketExists(bucketRequestWait); waiterResponse.matched().response().ifPresent(System.out::println); System.out.println(bucketName +" is ready"); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

请参阅 GitHub 上的完整示例

列出存储桶

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

导入

import software.amazon.awssdk.core.waiters.WaiterResponse; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.*; import software.amazon.awssdk.services.s3.waiters.S3Waiter;

代码

首先创建一个 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然后使用 S3Client 的listObjects方法检索存储桶中的对象列表。然后,在每个对象上使用 deleteObject 方法以删除它。

导入

import software.amazon.awssdk.core.waiters.WaiterResponse; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.*; import software.amazon.awssdk.services.s3.waiters.S3Waiter;

代码

首先创建一个 S3Client。

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

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

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

请参阅 GitHub 上的完整示例

删除空存储桶

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

导入

import software.amazon.awssdk.core.waiters.WaiterResponse; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.*; import software.amazon.awssdk.services.s3.waiters.S3Waiter;

代码

首先创建一个 S3Client。

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

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

public static void deleteBucketObjects(S3Client s3, String bucketName, String objectName) { ArrayList<ObjectIdentifier> toDelete = new ArrayList<ObjectIdentifier>(); toDelete.add(ObjectIdentifier.builder().key(objectName).build()); try { DeleteObjectsRequest dor = DeleteObjectsRequest.builder() .bucket(bucketName) .delete(Delete.builder().objects(toDelete).build()) .build(); s3.deleteObjects(dor); } catch (S3Exception e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } System.out.println("Done!"); }

删除存储桶。

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

请参阅 GitHub 上的完整示例