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

时间:2019-12-12 17:33:10

标签: aws-cdk

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完成部署-似乎不太复杂。

1 个答案:

答案 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版本所使用的用户帐户。