AWS Cloudformation S3 存储桶名称已存在

AWS Cloud Formation S3 Bucket Name already exist

我正在尝试使用以下云形成模板创建一个存储桶:

{
  "Resources": {
    "LoggingBucket": {
      "Type": "AWS::S3::Bucket",
      "Properties": {
        "BucketName": {
          "Fn::Join": [
            "/",
            [
              {
                "Ref": "AWS::Region"
              },
              {
                "Ref": "Environment"
              },
              "backend-logs"
            ]
          ]
        }
      }
    }
  }
}

但是,创建堆栈时出现以下错误:

us-east-1/development/backend-logs already exists

似乎错误有点误导 - 如果我将 / 更改为 .,它会起作用。

我还检查了 documentation,虽然 / 似乎是一个无效字符,但似乎 / 可能与他们自己的内部命名模式或其他东西冲突。

我是正确的还是遗漏了什么?

问题不在于斜杠,而在于存储桶名称。

当您使用 us-east-1/development/backend-logs 时,它会尝试创建一个名为 "development" 的存储桶,其中包含一个子文件夹 "backend-logs",而 "development" 是一个非常常见的名称,已经被某些人使用了和 S3 存储桶遵循通用命名约定,这就是为什么该名称不可用的错误。

当您使用 us-east-1/development.backend-logs 时,它会按可用的名称 "development.backend-logs" 创建存储桶,这就是创建存储桶的原因。