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_CREATE
和 CHANGE_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_CREATE
和CHANGE_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 设置自定义域名