AWS Cloud Formation 陷入 Review_In_Progress

Posted

技术标签:

【中文标题】AWS Cloud Formation 陷入 Review_In_Progress【英文标题】:AWS Cloud Formation Stuck in Review_In_Progress 【发布时间】:2018-03-05 18:20:12 【问题描述】:

我正在尝试使用文档中提到的 Java-8 为 Lambda 使用 AWS SAM 设置 AWS Code Pipeline

http://docs.aws.amazon.com/lambda/latest/dg/automating-deployment.html (示例在 node.js 中)。

但是,我的 Staging 卡在 CloudFormation Stack 卡在 REVIEW_IN_PROGRESS 中很长时间了。有没有办法调试这个问题?

我没有看到控制台中出现任何进一步的事件。有什么具体的检查吗?

模板如下

$ aws codepipeline get-pipeline --region us-east-1 --name aws-lexbot-facebook-pipeline

    "pipeline": 
        "roleArn": "arn:aws:iam::XXXXXXXXXXXX:role/AWS-CodePipeline-Service", 
        "stages": [
            
                "name": "Source", 
                "actions": [
                    
                        "inputArtifacts": [], 
                        "name": "Source", 
                        "actionTypeId": 
                            "category": "Source", 
                            "owner": "ThirdParty", 
                            "version": "1", 
                            "provider": "GitHub"
                        , 
                        "outputArtifacts": [
                            
                                "name": "MyApp"
                            
                        ], 
                        "configuration": 
                            "Owner": “xxxxxxx”, 
                            "Repo": "lexbot", 
                            "PollForSourceChanges": "true", 
                            "Branch": "master", 
                            "OAuthToken": "****"
                        , 
                        "runOrder": 1
                    
                ]
            , 
            
                "name": "Build", 
                "actions": [
                    
                        "inputArtifacts": [
                            
                                "name": "MyApp"
                            
                        ], 
                        "name": "CodeBuild", 
                        "actionTypeId": 
                            "category": "Build", 
                            "owner": "AWS", 
                            "version": "1", 
                            "provider": "CodeBuild"
                        , 
                        "outputArtifacts": [
                            
                                "name": "MyAppBuild"
                            
                        ], 
                        "configuration": 
                            "ProjectName": "aws-lexbot-facebook-codebuild"
                        , 
                        "runOrder": 1
                    
                ]
            , 
            
                "name": "Staging", 
                "actions": [
                    
                        "inputArtifacts": [
                            
                                "name": "MyAppBuild"
                            
                        ], 
                        "name": "LexBotBetaStack", 
                        "actionTypeId": 
                            "category": "Deploy", 
                            "owner": "AWS", 
                            "version": "1", 
                            "provider": "CloudFormation"
                        , 
                        "outputArtifacts": [], 
                        "configuration": 
                            "ActionMode": "CHANGE_SET_REPLACE", 
                            "ChangeSetName": "LexBotChangeSet", 
                            "RoleArn": "arn:aws:iam::XXXXXXXXXXX:role/cloudformation-lambda-execution-role", 
                            "Capabilities": "CAPABILITY_IAM", 
                            "StackName": "LexBotBetaStack", 
                            "TemplatePath": "MyAppBuild::SamTemplate.yaml"
                        , 
                        "runOrder": 1
                    
                ]
            
        ], 
        "artifactStore": 
            "type": "S3", 
            "location": “XXXXXX-us-east-1-987802409920"
        , 
        "name": "aws-lexbot-facebook-pipeline", 
        "version": 1
    

【问题讨论】:

您可以发布 CodePipeline 步骤吗? 嗨..我用模板编辑了帖子 【参考方案1】:

这可能是由于您的模板文件/对流层代码中的一些服务错误造成的。确保您可以可视化 cf 树以检查服务的通信方式。

【讨论】:

正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:

单击更改集并单击“名称”字段中的链接,它在状态原因中显示“模板格式错误:”。凭借这种洞察力,我能够识别并修复错误。

【讨论】:

【参考方案3】:

我转到更改集并点击执行按钮,所以它现在显示 CREATION_IN_PROGRESS。

【讨论】:

【参考方案4】:

概览

在您的 CodePipeline 步骤中,您使用的是 CHANGE_SET_CREATE 操作模式。这会在 CloudFormation 堆栈上创建一个更改集,但不会自动执行它。您需要使用CHANGE_SET_EXECUTE 执行更改集的第二个操作。或者,您可以将操作的操作模式更改为 CREATE_UPDATE,这应该会直接更新您的操作。

您可能希望在 CodePipeline 中使用 CHANGE_SET_CREATECHANGE_SET_EXECUTE 的一个原因是,如果您希望在它们之间有一个批准步骤。如果您希望这会自动完成,我建议您使用CREATE_UPDATE

CREATE_UPDATE 示例

下面是您的 CodePipeline Staging 阶段,但使用 CREATE_UPDATE 而不是 CREATE_CHANGE_SET。这将创建一个名为 stack 的新堆栈,如果同名堆栈已存在,则更新现有堆栈。


    "inputArtifacts": [
        
            "name": "MyAppBuild"
        
    ], 
    "name": "LexBotBetaStack", 
    "actionTypeId": 
        "category": "Deploy", 
        "owner": "AWS", 
        "version": "1", 
        "provider": "CloudFormation"
    , 
    "outputArtifacts": [], 
    "configuration": 
        "ActionMode": "CREATE_UPDATE", 
        "ChangeSetName": "LexBotChangeSet", 
        "RoleArn": "arn:aws:iam::XXXXXXXXXXX:role/cloudformation-lambda-execution-role", 
        "Capabilities": "CAPABILITY_IAM", 
        "StackName": "LexBotBetaStack", 
        "TemplatePath": "MyAppBuild::SamTemplate.yaml"
    , 
    "runOrder": 1

CHANGE_SET_CREATE 和 CHANGE_SET_EXECUTE 示例

下面是一个如何将CHANGE_SET_CREATECHANGE_SET_EXECUTE 一起使用的示例。它首先在命名堆栈上创建一个更改集,然后执行该更改集。如果您希望在更改集和执行之间有一个 CodePipeline Approval 步骤,这非常有用,因此您可以查看预期的更改。


    "inputArtifacts": [
        
            "name": "MyAppBuild"
        
    ], 
    "name": "LexBotBetaStackChangeSet", 
    "actionTypeId": 
        "category": "Deploy", 
        "owner": "AWS", 
        "version": "1", 
        "provider": "CloudFormation"
    , 
    "outputArtifacts": [], 
    "configuration": 
        "ActionMode": "CHANGE_SET_REPLACE", 
        "ChangeSetName": "LexBotChangeSet", 
        "RoleArn": "arn:aws:iam::XXXXXXXXXXX:role/cloudformation-lambda-execution-role", 
        "Capabilities": "CAPABILITY_IAM", 
        "StackName": "LexBotBetaStack", 
        "TemplatePath": "MyAppBuild::SamTemplate.yaml"
    , 
    "runOrder": 1
,

    "name": "LexBotBetaStackExecute", 
    "actionTypeId": 
        "category": "Deploy", 
        "owner": "AWS", 
        "version": "1", 
        "provider": "CloudFormation"
    , 
    "configuration": 
        "ActionMode": "CHANGE_SET_EXECUTE", 
        "ChangeSetName": "LexBotChangeSet", 
        "StackName": "LexBotBetaStack", 
    , 
    "runOrder": 2

【讨论】:

感谢您的解释。我都试过了。第一个(CREATE_UPDATE)dint 工作。但是添加第二个执行步骤是可行的。 酷,如果这解决了您的问题,想将其标记为已接受吗?这样有类似问题的人可以更可靠地找到答案 我只是接受了这个答案。再次非常感谢

以上是关于AWS Cloud Formation 陷入 Review_In_Progress的主要内容,如果未能解决你的问题,请参考以下文章

AWS:Cloud Formation:是不是可以使用多个“DependsOn”?

如何在 AWS Cloud Formation 中实施嵌套堆栈?

AWS Cloud Formation !Sub & !Ref AWS::Serverless::Function Policies 中的函数

如何在 AWS SAM Cloud-Formation 中使用 Route53 设置自定义域名

我能否在 SAM 模板中使用 AWS Cloud Formation 资源语法,反之亦然?

如何使用 Cloud Formation 模板自动扩展 DynamoDB?