微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

AWS Cloudformation 卡在 UPDATE_ROLLBACK_FAILED

如何解决AWS Cloudformation 卡在 UPDATE_ROLLBACK_FAILED

我通过 AWS 无服务器应用程序模型 (SAM) 部署了我的 AWS Lambda。我的一个 Lambdas 使用 Numpy,我通过 @keithRozario 的 Klayers 的第 3 方层引用它。我正在使用 Klayers-python38-numpy:16,但发现它在我今天部署后已被弃用,这使我的堆栈处于 UPDATE_ROLLBACK_Failed 状态。

一个建议是从 AWS 控制台使用 Stack actions -> Continue update rollback;我试过了,但没有用。另一种解决方案是删除堆栈。然而,这将是我第一次删除堆栈,我想知道的是:如果我通过控制台删除我的堆栈,当我重新部署它时,我的堆栈会重新创建吗?我已经寻找我的问题的答案,但我只找到了删除堆栈中资源的引用。

我还想知道的是,我的堆栈是 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","configuration": {
                            "ProjectName": "my-pipeline"
                        },"outputArtifacts": [
                            {
                                "name": "BuildArtifactAsZip"
                            }
                        ],"inputArtifacts": [
                            {
                                "name": "SourceCodeAsZip"
                            }
                        ]
                    }
                ]
            },{
                "name": "CI","actions": [
                    {
                        "name": "CreateChangeSet","actionTypeId": {
                            "category": "Deploy","provider": "CloudFormation","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","runorder": 2,"configuration": {
                            "ActionMode": "CHANGE_SET_EXECUTE","StackName": "my-pipeline-ci"
                        },"outputArtifacts": [
                            {
                                "name": "my-pipelineCIChangeSet"
                            }
                        ],{
                "name": "Staging","ChangeSetName": "my-pipeline-ChangeSet-staging","ParameterOverrides": "{\n  \"MyEnvironment\" : \"staging\"\n}\n","StackName": "my-pipeline-staging","StackName": "my-pipeline-staging"
                        },"outputArtifacts": [
                            {
                                "name": "my-pipelinestagingChangeSet"
                            }
                        ],{
                "name": "Prod","actions": [
                    {
                        "name": "DeploymentApproval","actionTypeId": {
                            "category": "Approval","provider": "Manual","configuration": {},"inputArtifacts": []
                    },{
                        "name": "CreateChangeSet","ChangeSetName": "my-pipeline-ChangeSet-prod","ParameterOverrides": "{\n  \"MyEnvironment\" : \"prod\"\n}\n","StackName": "my-pipeline-prod","runorder": 3,"StackName": "my-pipeline-prod"
                        },"outputArtifacts": [
                            {
                                "name": "my-pipelineProdChangeSet"
                            }
                        ],"inputArtifacts": []
                    }
                ]
            }
        ],"version": 1
    }
}

解决方法

如果我通过控制台删除我的堆栈,当我重新部署它时,我的堆栈会重新创建吗?

是的。您可以再次尝试部署相同的堆栈,但您可能应该首先调查它失败的原因。

我还想知道的是,我的堆栈是 AWS CodePipeline 中众多堆栈中的第一个堆栈,如果我删除堆栈,我的管道是否仍然有效?

不知道,但可能不会。它特定于用例,您尚未提供有关 CP 的任何信息。

此外,当我继续处理管道中的后续堆栈时,我会遇到更多失败的堆栈吗?

如果一项操作失败,您将无法继续执行进一步操作。即使可以,其他堆栈也可以依赖第一个堆栈,它们也会失败。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。