是否可以异步执行AWS CDK的部署?

时间:2020-06-12 10:18:35

标签: amazon-web-services amazon-cloudformation aws-cdk

命令cdk deploy ...用于部署一个或多个CloudFormation堆栈。执行时,它会显示由于部署了各种堆栈而产生的消息,这可能需要一些时间。

deploy command支持--notification-arns参数,该参数是CloudFormation会通过堆栈相关事件通知的SNS主题的ARN数组。

是否可以执行cdk deploy并且不让其向控制台报告进度(即,命令在上载新的CloudFormation资产后立即退出),而仅依靠SNS主题作为获取反馈的方式部署进度?

3 个答案:

答案 0 :(得分:1)

一种快速而肮脏的方式(未经测试)将是使用nohup

$ nohup cdk ... --require-approval never 1>/dev/null

--require-approval never只是意味着它不会停止请求sercurity请求的许可,显然nohup允许命令不终止地运行。

这是我能想到的唯一解决方案。

长期的另一种解决方案是使用CdkToolkit创建自己的部署脚本。查看cdk命令以了解一个想法。这是我从aws-cdk一直想要的-我想要自定义部署脚本而不是使用shell。

答案 1 :(得分:0)

我找到了通过 --no-execute 标志异步部署 cdk 应用程序的解决方案:

cdk deploy StackX --no-execute
change_set_name = aws cloudformation list-change-sets --stack-name StackX --query "Summaries[0].ChangeSetId" --output text
aws cloudformation execute-change-set --change-set-name $change_set_name

就我而言,这是有效的,因为我仅使用此方法来部署新堆栈,因此此堆栈只会有 1 个更改集,我可以使用索引为 0 的条目的查询来检索它。如果您希望更新现有堆栈,您必须从 list-change-sets 命令返回的列表中选择正确的更改集。

答案 2 :(得分:0)

我遇到了类似的问题 - 我不想在等待 ec2 实例上长时间运行的 init 脚本完成时保持控制台打开。发布完成并创建变更集后,我按了 Ctrl-C。它一直在运行,我已经检查了 Cloudformation 视图中的状态。不完美,也不适合自动化,但我不需要让流程在我的机器上运行。

相关问题