Не удалось обновить стек обновления AWS S3 Cloudormation - PullRequest
0 голосов
/ 05 мая 2018

У меня есть шаблон облачной информации для S3, и я пытаюсь создать его один раз, а затем обновить. Но когда я пытаюсь обновить его, происходит сбой с сообщением об ошибке <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/

1 Ответ

0 голосов
/ 05 мая 2018

Я полагаю, что вы удаляете CFT и воссоздаете его. Ваша проблема "DeletionPolicy": "Retain", которая сохраняет корзину S3 даже после удаления CFT. Если вы обновите существующий, все будет в порядке.

Просто удалите корзину вручную, если вы удалите CFT или измените "DeletionPolicy": "Retain" на "DeletionPolicy": "Delete"

...