1

我在 Amazon S3 中创建了一个存储桶并将其命名为“todo”,并且该存储桶已成功创建且没有错误。绝对不可能没有其他人使用该存储桶名称,所以如果存储桶应该是全球唯一的,这是怎么发生的?

4

1 回答 1

1

我尝试创建一个名为todo的存储桶,并得到了预期的异常。我想您是第一个用该名称命名存储桶的人。

public static void main(String[] args) throws URISyntaxException {
        final String USAGE = "\n" +
                "Usage:\n" +
                "    <bucketName> \n\n" +
                "Where:\n" +
                "    bucketName - the name of the bucket to create. The bucket name must be unique, or an error occurs.\n\n" ;

      //  if (args.length != 1) {
      //      System.out.println(USAGE);
      //      System.exit(1);
      // }

        String bucketName = "todo"; //args[0];
        System.out.format("Creating a bucket named %s\n",
                bucketName);

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

        createBucket (s3, bucketName);
        s3.close();
    }

    // snippet-start:[s3.java2.create_bucket_waiters.main]
    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);
        }
    }
于 2021-10-26T14:11:29.140 回答