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

Mar*_*lor 5 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 来完成部署——它似乎不那么复杂。

Mar*_*lor 5

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

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

cdk synth
Run Code Online (Sandbox Code Playgroud)

然后我将 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
Run Code Online (Sandbox Code Playgroud)

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

“cdk --app . depoy {your stack name} --require-approval never”告诉 aws-cdk 给我们现有的模板和资产。这避免了 CD 过程可能产生与 CI 过程不同的设置的情况。这 ”。” 表示模板和资产在当前文件夹中。

您需要在 CD 服务器上安装 node & aws-cdk(在我的例子中是 Octopus Deploy 触手);

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}
Run Code Online (Sandbox Code Playgroud)

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