【问题标题】:How to create S3 bucket to avoid name collisions如何创建 S3 存储桶以避免名称冲突
【发布时间】:2019-08-02 07:52:49
【问题描述】:

我正在尝试创建一个以编程方式创建 S3 存储桶的程序,但我遇到了一个问题,即如果名称已创建,存储桶将失败,因为它是一个全局命名空间。

如何以编程方式确保/创建在 Java 中全局唯一的名称?

【问题讨论】:

    标签: amazon-web-services amazon-s3 aws-sdk


    【解决方案1】:

    对我来说,我的工作是使用我的 Account IDregion 作为存储桶名称的一部分,例如:my-bucket-1234567890-us-east-1

    这比使用随机字符串更好,并提供相关和确定性的信息。当然你也可以添加一些随机的:

    int i = 0;
    String bucketName;
    do {
        bucketName = myName + "-" accountId + "-" region + "-" + (++i);
    } while (bucketExists(bucketName));
    

    您可以使用GetIdentityCaller() 获取帐户信息。
    请注意,存储桶名称的限制为 63 个字符。

    【讨论】:

      【解决方案2】:

      您应该继续尝试创建一个存储桶,直到它起作用:

      while True:
          generate a UUID
          try to create the bucket called 'foo-UUID'
          if it worked:
              break
      

      例如,UUID 可以是 UUID.randomUUID() 的 4 个字符部分。使用与您的公司和用例相关的有用前缀。

      【讨论】:

        猜你喜欢
        • 2021-03-26
        • 2020-07-16
        • 2017-01-04
        • 1970-01-01
        • 1970-01-01
        • 2011-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多