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来完成部署——它似乎不那么复杂。
好的,经过一些工作,我相信我有一个解决方案。
作为我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