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

Amazon web services 是否可以异步执行AWS CDK的部署?,amazon-web-services,amazon-cloudformation,aws-cdk,Amazon Web Services,Amazon Cloudformation,Aws Cdk,命令cdk deploy…用于部署一个或多个CloudFormation堆栈。当它执行时,它会显示各种堆栈部署所产生的消息,这可能需要一些时间 支持--notification arns参数,这是一个SNS主题的ARN数组,CloudFormation将使用堆栈相关事件通知这些主题 是否可以执行cdk deploy,而不让它向控制台报告其进度(即,在上传新的CloudFormation资产后,命令立即退出),并简单地依赖SNS主题作为获取部署进度反馈的手段?一种快速且肮脏的方式(未经测试)将使用

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

支持
--notification arns
参数,这是一个SNS主题的ARN数组,CloudFormation将使用堆栈相关事件通知这些主题

是否可以执行
cdk deploy
,而不让它向控制台报告其进度(即,在上传新的CloudFormation资产后,命令立即退出),并简单地依赖SNS主题作为获取部署进度反馈的手段?

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

$nohup cdk--从不需要批准1>/dev/null
--require approval never
仅仅意味着它不会停止请求
sersecurity
请求的许可,而且显然
nohup
允许命令在没有终止的情况下运行

我能想到的唯一解决办法就是快速


另一个长期解决方案是使用
CdkToolkit
创建自己的部署脚本。看一下command,了解一下您的想法。这是我从
aws cdk
一段时间以来一直想要的东西-我想要自定义部署脚本,而不是使用shell。

我找到了一个解决方案,可以通过
--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

在我的例子中,这是可行的,因为我使用此方法仅部署新堆栈,因此此堆栈将只有一个更改集,我可以通过查询索引为0的条目来检索它。如果希望更新现有堆栈,则必须从list change sets命令返回的列表中选择正确的更改集。

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

据我所知,不可能以适当的方式将其放到后台。但是您不需要使用--notification arns来获取有关堆栈创建的更新。您只需登录AWS控制台并检查“cloudformation”服务。在这里,您可以获得与控制台上相同的信息,还有更多信息。此外,如果未通过禁用,CDK会要求您在控制台中获得批准--从不要求批准。即使您通过在命令(linux或mac)末尾添加“&”将其置于后台,sysout也会打印到控制台。谢谢,但与控制台的任何交互都意味着无法实现自动化。通过SNS/SQS使用通知的全部目的是避免用户需要登录控制台,并允许自动监控Cfn部署的进度。不幸的是,这并不是真正异步执行变更集,它仅仅意味着在后台通过bash运行。背景是,我希望通过lambda启动CDK部署,并在启动部署后立即让lambda退出,并依靠通过SQS/SNS的通知来监控部署的进度。谢谢你的
CdkToolkit
创意,我去看看。