2017-09-24 45 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