如何创建S3存储桶以避免名称冲突

时间:2019-03-11 22:30:32

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

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

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

2 个答案:

答案 0 :(得分:1)

对我来说,我将帐户ID和区域用作存储桶名称的一部分,例如:my-bucket-1234567890-us-east-1

这比使用随机字符串更好,并且提供了相关的确定性信息。

当然,您也可以添加一些随机值:

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

您可以使用GetIdentityCaller来获取帐户的信息。

请注意,存储桶名称的限制为63个字符。

答案 1 :(得分:0)

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

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

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