2017-09-24 77 views
2

卡住AWS云的形成,我试图用建立AWS代码管道与AWS SAM的lambda作为在单证在Review_In_Progress

http://docs.aws.amazon.com/lambda/latest/dg/automating-deployment.html 提到的(例如在node.js中虽然)的Java-8。

但是,我的Staging卡在CloudFormation堆栈长时间停留在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 
    } 
} 
+0

你可以发布CodePipeline步骤吗? –

+0

嗨..我用模板编辑帖子 – Idicula

回答

3

概述

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

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

CREATE_UPDATE例如

下面是你的CodePipeline 分期阶段,但使用CREATE_UPDATE代替CREATE_CHANGE_SET。这将创建一个名为堆栈的新堆栈,或者更新现有的堆栈,如果该名称已经存在。

{ 
    "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批准步骤并执行它,那么这非常有用,因此您可以查看预期的变更。

{ 
    "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 
} 
+0

谢谢你的解释。我尝试了两个。第一个(CREATE_UPDATE)dint工作。但增加了第二个执行步骤。 – Idicula

+0

很酷,如果这能解决你的问题,想把它标记为已接受?这样,有类似问题的人可以更可靠地找到答案 –

+0

我刚刚接受了这个答案。再次感谢 – Idicula