Облачная информация AWS застряла в UPDATE_ROLLBACK_FAILED

#amazon-cloudformation #aws-codepipeline #aws-serverless

Вопрос:

Я развертываю свои AWS-лямбды с помощью модели приложений AWS без сервера (SAM). Одна из моих Лямбд использует Numpy, на которую я ссылаюсь через сторонний слой от Klayers @keithRozario. Я использовал Klayers-python38-numpy:16, но обнаружил, что он устарел после того, как я развернул его сегодня, что оставило мой стек в состоянии UPDATE_ROLLBACK_FAILED.

Одна из рекомендаций-использовать Stack actions -> Continue update rollback консоль AWS, которую я пробовал, но она не сработала. Другое решение — удалить стек. Тем не менее, это будет мое первое удаление стека, и я хотел бы знать следующее: если я удалю свой стек с помощью консоли, будет ли мой стек воссоздан при его повторном развертывании? Я искал ответы на свой вопрос, но нахожу только ссылки на удаление ресурсов в стеке.

Что я также хотел бы знать, так это то, что мой стек является первым стеком из многих в AWS CodePipeline, будет ли мой конвейер по-прежнему работать, если я удалю свой стек? Кроме того, буду ли я испытывать больше неудачных стеков при переходе к последующим стекам в моем конвейере?

Наконец, план состоит в том, чтобы обновить до Klayers-python38-numpy:19 при повторном развертывании.

РЕДАКТИРОВАТЬ: согласно @marcin

Проблема в том, что Klayers-python38-numpy:16, который уже развернут во всем моем стеке, больше недоступен. Сегодня утром я попытался внести изменения в свой код, но на этом этапе мой конвейер не удался CreateChangeSet . Я предполагаю, что тот факт, что этот слой больше недоступен, является причиной того, что мой стек не может откатиться.

Мой трубопровод выглядит так:

 
{
    "pipeline": {
        "name": "my-pipeline",
        "roleArn": "arn:aws:iam::123456789:role/my-pipeline-CodePipelineExecutionRole-4O8PAUJGLXYZ",
        "artifactStore": {
            "type": "S3",
            "location": "my-pipeline-buildartifactsbucket-62byf2xqaa8z"
        },
        "stages": [
            {
                "name": "Source",
                "actions": [
                    {
                        "name": "SourceCodeRepo",
                        "actionTypeId": {
                            "category": "Source",
                            "owner": "ThirdParty",
                            "provider": "GitHub",
                            "version": "1"
                        },
                        "runOrder": 1,
                        "configuration": {
                            "Branch": "master",
                            "OAuthToken": "****",
                            "Owner": "hugo",
                            "Repo": "my-pipeline"
                        },
                        "outputArtifacts": [
                            {
                                "name": "SourceCodeAsZip"
                            }
                        ],
                        "inputArtifacts": []
                    }
                ]
            },
            {
                "name": "Build",
                "actions": [
                    {
                        "name": "CodeBuild",
                        "actionTypeId": {
                            "category": "Build",
                            "owner": "AWS",
                            "provider": "CodeBuild",
                            "version": "1"
                        },
                        "runOrder": 1,
                        "configuration": {
                            "ProjectName": "my-pipeline"
                        },
                        "outputArtifacts": [
                            {
                                "name": "BuildArtifactAsZip"
                            }
                        ],
                        "inputArtifacts": [
                            {
                                "name": "SourceCodeAsZip"
                            }
                        ]
                    }
                ]
            },
            {
                "name": "CI",
                "actions": [
                    {
                        "name": "CreateChangeSet",
                        "actionTypeId": {
                            "category": "Deploy",
                            "owner": "AWS",
                            "provider": "CloudFormation",
                            "version": "1"
                        },
                        "runOrder": 1,
                        "configuration": {
                            "ActionMode": "CHANGE_SET_REPLACE",
                            "Capabilities": "CAPABILITY_IAM",
                            "ChangeSetName": "my-pipeline-ChangeSet-ci",
                            "ParameterOverrides": "{n  "MyEnvironment" : "ci"n}n",
                            "RoleArn": "arn:aws:iam::123456789:role/my-pipeline-CloudFormationExecutionRole-1O8GOB5C2VXYZ",
                            "StackName": "my-pipeline-ci",
                            "TemplatePath": "BuildArtifactAsZip::packaged.yaml"
                        },
                        "outputArtifacts": [],
                        "inputArtifacts": [
                            {
                                "name": "BuildArtifactAsZip"
                            }
                        ]
                    },
                    {
                        "name": "ExecuteChangeSet",
                        "actionTypeId": {
                            "category": "Deploy",
                            "owner": "AWS",
                            "provider": "CloudFormation",
                            "version": "1"
                        },
                        "runOrder": 2,
                        "configuration": {
                            "ActionMode": "CHANGE_SET_EXECUTE",
                            "ChangeSetName": "my-pipeline-ChangeSet-ci",
                            "RoleArn": "arn:aws:iam::123456789:role/my-pipeline-CloudFormationExecutionRole-1O8GOB5C2VXYZ",
                            "StackName": "my-pipeline-ci"
                        },
                        "outputArtifacts": [
                            {
                                "name": "my-pipelineCIChangeSet"
                            }
                        ],
                        "inputArtifacts": []
                    }
                ]
            },
            {
                "name": "Staging",
                "actions": [
                    {
                        "name": "CreateChangeSet",
                        "actionTypeId": {
                            "category": "Deploy",
                            "owner": "AWS",
                            "provider": "CloudFormation",
                            "version": "1"
                        },
                        "runOrder": 1,
                        "configuration": {
                            "ActionMode": "CHANGE_SET_REPLACE",
                            "Capabilities": "CAPABILITY_IAM",
                            "ChangeSetName": "my-pipeline-ChangeSet-staging",
                            "ParameterOverrides": "{n  "MyEnvironment" : "staging"n}n",
                            "RoleArn": "arn:aws:iam::123456789:role/my-pipeline-CloudFormationExecutionRole-1O8GOB5C2VXYZ",
                            "StackName": "my-pipeline-staging",
                            "TemplatePath": "BuildArtifactAsZip::packaged.yaml"
                        },
                        "outputArtifacts": [],
                        "inputArtifacts": [
                            {
                                "name": "BuildArtifactAsZip"
                            }
                        ]
                    },
                    {
                        "name": "ExecuteChangeSet",
                        "actionTypeId": {
                            "category": "Deploy",
                            "owner": "AWS",
                            "provider": "CloudFormation",
                            "version": "1"
                        },
                        "runOrder": 2,
                        "configuration": {
                            "ActionMode": "CHANGE_SET_EXECUTE",
                            "ChangeSetName": "my-pipeline-ChangeSet-staging",
                            "RoleArn": "arn:aws:iam::123456789:role/my-pipeline-CloudFormationExecutionRole-1O8GOB5C2VXYZ",
                            "StackName": "my-pipeline-staging"
                        },
                        "outputArtifacts": [
                            {
                                "name": "my-pipelineStagingChangeSet"
                            }
                        ],
                        "inputArtifacts": []
                    }
                ]
            },
            {
                "name": "Prod",
                "actions": [
                    {
                        "name": "DeploymentApproval",
                        "actionTypeId": {
                            "category": "Approval",
                            "owner": "AWS",
                            "provider": "Manual",
                            "version": "1"
                        },
                        "runOrder": 1,
                        "configuration": {},
                        "outputArtifacts": [],
                        "inputArtifacts": []
                    },
                    {
                        "name": "CreateChangeSet",
                        "actionTypeId": {
                            "category": "Deploy",
                            "owner": "AWS",
                            "provider": "CloudFormation",
                            "version": "1"
                        },
                        "runOrder": 2,
                        "configuration": {
                            "ActionMode": "CHANGE_SET_REPLACE",
                            "Capabilities": "CAPABILITY_IAM",
                            "ChangeSetName": "my-pipeline-ChangeSet-prod",
                            "ParameterOverrides": "{n  "MyEnvironment" : "prod"n}n",
                            "RoleArn": "arn:aws:iam::123456789:role/my-pipeline-CloudFormationExecutionRole-1O8GOB5C2VXYZ",
                            "StackName": "my-pipeline-prod",
                            "TemplatePath": "BuildArtifactAsZip::packaged.yaml"
                        },
                        "outputArtifacts": [],
                        "inputArtifacts": [
                            {
                                "name": "BuildArtifactAsZip"
                            }
                        ]
                    },
                    {
                        "name": "ExecuteChangeSet",
                        "actionTypeId": {
                            "category": "Deploy",
                            "owner": "AWS",
                            "provider": "CloudFormation",
                            "version": "1"
                        },
                        "runOrder": 3,
                        "configuration": {
                            "ActionMode": "CHANGE_SET_EXECUTE",
                            "ChangeSetName": "my-pipeline-ChangeSet-prod",
                            "RoleArn": "arn:aws:iam::123456789:role/my-pipeline-CloudFormationExecutionRole-1O8GOB5C2VXYZ",
                            "StackName": "my-pipeline-prod"
                        },
                        "outputArtifacts": [
                            {
                                "name": "my-pipelineProdChangeSet"
                            }
                        ],
                        "inputArtifacts": []
                    }
                ]
            }
        ],
        "version": 1
    }
}
 

Ответ №1:

если я удалю свой стек через консоль, будет ли мой стек воссоздан при его повторном развертывании?

ДА. Вы можете попытаться развернуть тот же стек снова, но, вероятно, вам следует в первую очередь выяснить, почему он не удался.

Что я также хотел бы знать, так это то, что мой стек является первым стеком из многих в AWS CodePipeline, будет ли мой конвейер по-прежнему работать, если я удалю свой стек?

Не знаю, но, скорее всего, нет. Его использование зависит от конкретного случая, и вы не предоставили никакой информации о CP.

Кроме того, буду ли я испытывать больше неудачных стеков при переходе к последующим стекам в моем конвейере?

Если одно действие завершится неудачно, вы не сможете приступить к дальнейшим действиям. Даже если бы вы могли, другие стеки могут зависеть от первого, и они также потерпят неудачу.

Комментарии:

1. Я обновил свой ответ заявлением о проблеме и своим кодом конвейера. Мой конвейер потерпел неудачу на этапе CI, на этапе CreateChangeSet. Я предполагаю, что это в файле UPDATE_ROLLBACK_FAILED, потому что шаг CreateChangeSet ссылается на слой, который больше не существует. Все стеки идентичны, их три для наших CI, промежуточных и вспомогательных сред. С учетом сказанного, каков мой лучший подход? Удалить стек? Удалить весь конвейер целиком? Спасибо за вашу помощь.

2. В итоге я щелкнул, Stack actions -> Continue update rollback но на этот раз я открыл раздел «дополнительно» и пропустил все ресурсы. Как только я это сделал, я перешел с обновлением на numpy:19, и все работало нормально.

3. @хьюго, нет проблем. если бы ответ был полезным, мы были бы признательны за его принятие.