aws-cdk允许您合成一个堆栈-产生许多文件-包括.template.json文件。
可以在不使用aws-cdk工具的情况下部署此.template.json文件吗?还是设计为要求通过aws-cdk工具进行部署?
我问的原因是,我想通过CI(连续集成)合成模板,将其存储到存储库中,然后使用CD(连续部署)工具来部署该模板。
我可以让CD工具运行aws-cdk部署。但是我不希望这样做,因为所生成的模板可能与CI工具存储在存储库中的版本有所不同。 (例如,如果CI / CD工具之间存在aws-cdk版本差异)。
更新2019年12月13日
简短的答案似乎是。是的,您可以部署由aws-cdk生成的模板
更长的答案似乎是,如果您在堆栈中使用资产(例如,lambda代码),它将变得很复杂。这些将在模板中生成参数,如果将堆栈部署到aws-cdk之外,则需要完成这些参数。
我确信这是可能的-但我必须承认,就短期而言,我将使用aws-cdk完成部署-似乎不太复杂。
答案 0 :(得分:1)
好吧,经过一些工作,我相信我有解决方案。
作为我的CI(持续集成)工作的一部分,我运行:
cdk synth
然后我将cdk.out文件夹的内容保存到存储库中(我使用的是Octopus Deployment)。
作为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 {您的堆栈名称} --require-approval从不”告诉aws-cdk我们现有的模板和资产。这避免了CD进程可能产生与CI进程不同的设置的情况。 “。”表示模板和资源位于当前文件夹中。
您将需要在CD服务器上安装node&aws-cdk(在我的情况下为Octopus Deploy触手);
节点安装很容易,只需登录并安装。
要添加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版本所使用的用户帐户。