Cloudformation 脚本堆栈构建使用现有 s3 存储桶而不是创建新存储桶(错误:s3-bucket-name 已存在)

vis*_*ssu 2 amazon-s3 amazon-web-services aws-cloudformation

我正在创建一个 AWS cloudformation 脚本来创建 S3 存储桶和通知事件来触发 Lambda。作为其中的一部分,如果尚未创建 s3 存储桶,它将创建 s3 存储桶并且一切正常。

但如果 S3 存储桶已经存在,则会出现错误。

Error: s3-bucket-name already exists

"S3Bucket" : {
        "Type" : "AWS::S3::Bucket",
        "Properties" : {
            "BucketName" : {
                "Ref": "s3-bucket-name"
            },
            "NotificationConfiguration" : {
                "LambdaConfigurations" : [ {
                    "Event" : "s3:ObjectCreated:*",
                    "Filter" : {
                        ...
                    },
                    "Function" : {
                        "Fn::Sub": "<your-lambda-arn>"
                    }
                }]
        ...
}
Run Code Online (Sandbox Code Playgroud)

AWS cloudformation 堆栈应使用该存储桶(如果已存在)。如果不存在则创建。

我可能错过了一些东西。

Mar*_*cin 6

如果您的模板尚未创建存储桶,AWS 将简单地假设您正在尝试创建与现有存储桶同名的第二个存储桶。当然你不能这样做,因为存储桶必须有唯一的名称。因此你会得到s3-bucket-name already exists错误。

要将在 CloudFormation 外部创建的现有存储桶置于 CloudFormation 的控制之下,您需要导入它们。

S3 存储桶是可以导入到 CloudFormation 中的资源之一(如果它们已存在)。

  • 似乎导入现有资源需要现有资源的云形成脚本。如果是手动创建的存储桶,我们如何导入它们? (2认同)