提问者:小点点

是否可以部署以前的aws-cdk合成堆栈?


aws-cdk允许您合成一个堆栈——它会生成许多文件——包括一个.模板. json文件。

可以在没有aws-cdk工具的情况下部署这个.模板. json文件吗?或者它被设计为需要通过aws-cdk工具进行部署?

我问的原因是,我想通过CI(持续集成)合成模板,将其存储到存储库中,然后使用CD(持续部署)工具来部署该模板。

我可以让CD工具运行aws-cdk部署。但我不想这样做,因为生成的模板可能与CI工具存储在存储库中的版本不同。(例如,如果CI/CD工具之间存在aws-cdk版本差异)。

2019年12月13日更新

简短的答案似乎是肯定的。是的,您可以部署aws-cdk生成的模板

较长的答案似乎是,如果您在堆栈中使用资产(例如lambda代码),它会变得复杂。这些将在模板中生成参数,如果您将堆栈部署在aws-cdk之外,则需要完成这些参数。

我确信这是可能的——但我不得不承认,在短期内,我只是打算使用aws-cdk来完成部署——它似乎不那么复杂。


共3个答案

匿名用户

好的,经过一些工作,我相信我有一个解决方案。

作为我CI(持续集成)工作的一部分,我运行:

cdk synth

然后,我将cdk. out文件夹的内容保存到存储库中(我使用的是Octopus部署)。

作为我CD(持续部署)工作的一部分,我有以下(Powershell):

$Env:AWS_ACCESS_KEY_ID={your key}
$Env:AWS_SECRET_ACCESS_KEY={your secret}
$Env:AWS_DEFAULT_REGION={your region}

$cdk=[Environment]::GetFolderPath([Environment+SpecialFolder]::ApplicationData) + "\npm\cdk.cmd"
& $cdk --app . deploy {your stack name} --require-approval never

所以“cdk合成器”将生成部署所需的模板和资产。

"cdk--app. depoy{你的堆栈名}--不需要批准"告诉我们aws-cdk现有的模板和资产。这避免了CD进程可能产生与CI进程不同的设置的情况。"."表示模板

您将需要安装node

节点安装很简单,只需登录并安装。

要添加aws-cdk,请执行以下操作(使用管理员powershell):

npm prefix -g  // Make note of the path
npm config set prefix C:\Windows\System32\config\systemprofile\AppData\Roaming\npm
npm install -g aws-cdk
npm config set prefix {original path}

请注意,npm路径可能因您的使用而异-将取决于用于CD进程和Windows版本的用户帐户。

匿名用户

一种选择是使用CDK生成Cloud编队变更集,然后稍后部署该变更集

匿名用户

为此,您可以像cdk--app cdk. out部署一样执行cdk,它使用指定文件夹中已经创建的云程序集而不是运行synth。

https://github.com/aws/aws-cdk/issues/18790