【问题标题】:AWS S3 Cloudormation updating stack failsAWS S3 Cloudformation 更新堆栈失败
【发布时间】:2018-05-05 08:08:06
【问题描述】:

我有一个用于 S3 的 cloudformation 模板,我正在尝试创建一次然后更新它。但是当我尝试更新它时,它会失败并显示错误消息<bucket_name> already exists in stack <arn:id>。

    "S3Bucket": {
        "Type": "AWS::S3::Bucket",
        "DeletionPolicy": "Retain",
        "Properties": {
            "AccessControl": "BucketOwnerFullControl",
            "BucketName": {
                "Fn::Join": [
                    "-",
                    [
                        {
                            "Fn::GetAtt": [
                                "VPCInfo",
                                "VPCname"
                            ]
                        },
                        {
                            "Ref": "BucketName"
                        }
                    ]
                ]
            },
            "LoggingConfiguration": {
                "DestinationBucketName": {
                    "Fn::Join": [
                        "",
                        [
                            {
                                "Fn::GetAtt": [
                                    "VPCInfo",
                                    "VPCname"
                                ]
                            },
                            "-s3logs"
                        ]
                    ]
                },
                "LogFilePrefix": {
                    "Fn::Join": [
                        "-",
                        [
                            {
                                "Fn::GetAtt": [
                                    "VPCInfo",
                                    "VPCname"
                                ]
                            },
                            {
                                "Ref": "AWS::StackName"
                            }
                        ]
                    ]
                }
            },
            "VersioningConfiguration": {
                "Status": "Enabled"
            }
        }
    }

第二次尝试更新 BucketName & TopicName 作为参数传递的地方

    "S3Bucket": {
        "Type": "AWS::S3::Bucket",
        "DeletionPolicy": "Retain",
        "Properties": {
            "AccessControl": "BucketOwnerFullControl",
            "BucketName": {
                "Fn::Join": [
                    "-",
                    [
                        {
                            "Fn::GetAtt": [
                                "VPCInfo",
                                "VPCname"
                            ]
                        },
                        {
                            "Ref": "BucketName"
                        }
                    ]
                ]
            },
            "LoggingConfiguration": {
                "DestinationBucketName": {
                    "Fn::Join": [
                        "",
                        [
                            {
                                "Fn::GetAtt": [
                                    "VPCInfo",
                                    "VPCname"
                                ]
                            },
                            "-s3logs"
                        ]
                    ]
                },
                "LogFilePrefix": {
                    "Fn::Join": [
                        "-",
                        [
                            {
                                "Fn::GetAtt": [
                                    "VPCInfo",
                                    "VPCname"
                                ]
                            },
                            {
                                "Ref": "AWS::StackName"
                            }
                        ]
                    ]
                }
            },
            "NotificationConfiguration": {
                "TopicConfigurations": [
                    {
                        "Topic": {
                            "Fn::Join": [
                                "",
                                [
                                    "arn:aws:sns:",
                                    {
                                        "Ref": "AWS::Region"
                                    },
                                    ":",
                                    {
                                        "Ref": "AWS::AccountId"
                                    },
                                    ":function:",
                                    {
                                        "Ref": "TopicName"
                                    }
                                ]
                            ]
                        },
                        "Event": "s3:ObjectCreated:*",
                        "Filter": {
                            "S3Key": {
                                "Rules": [
                                    {
                                        "Name": "suffix",
                                        "Value": {
                                            "Ref": "FileSuffix"
                                        }
                                    }
                                ]
                            }
                        }
                    },
                    {
                        "Topic": {
                            "Fn::Join": [
                                "",
                                [
                                    "arn:aws:sns:",
                                    {
                                        "Ref": "AWS::Region"
                                    },
                                    ":",
                                    {
                                        "Ref": "AWS::AccountId"
                                    },
                                    ":function:",
                                    {
                                        "Ref": "TopicName"
                                    }
                                ]
                            ]
                        },
                        "Event": "s3:ObjectRemoved:*",
                        "Filter": {
                            "S3Key": {
                                "Rules": [
                                    {
                                        "Name": "suffix",
                                        "Value": {
                                            "Ref": "FileSuffix"
                                        }
                                    }
                                ]
                            }
                        }
                    }
                ]
            },
            "VersioningConfiguration": {
                "Status": "Enabled"
            }
        }
    }

更新 S3 堆栈的正确方法是什么?我之所以尝试做两次是因为这个-> https://aws.amazon.com/premiumsupport/knowledge-center/unable-validate-destination-s3/

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-cloudformation


    【解决方案1】:

    我相信您正在删除 CFT 并重新创建它。您的问题是"DeletionPolicy": "Retain",即使您删除了 CFT,它也会保留 S3 存储桶。如果你更新现有的,你应该没问题。

    如果删除CFT或将"DeletionPolicy": "Retain"更改为"DeletionPolicy": "Delete",只需手动删除存储桶

    【讨论】:

      猜你喜欢
      • 2017-10-18
      • 1970-01-01
      • 2017-07-18
      • 2021-06-29
      • 1970-01-01
      • 2021-12-29
      • 2021-06-27
      • 1970-01-01
      • 2014-07-11
      相关资源
      最近更新 更多