AWS CDK - 部署后操作

Łuk*_*asz 3 amazon-web-services aws-cdk

是否有人知道执行部署后功能的方法。Follwing 是一个休闲 CDK 应用程序的示例。

app = core.App()
Stack(app, ...)
app.synth()
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一种在部署模板后应用一些逻辑的方法。问题是应用程序在 cdk 工具开始部署模板之前完成。

谢谢

mar*_*use 11

我发现在文件下添加部署脚本并通过文件在 CDK 部署命令之前和之后调用cdk deploy它更方便,而不是将命令包装在 bash 脚本中。这样您就可以继续使用该命令,而无需手动调用自定义脚本。prepostcdk_hooks.shcdk.jsoncdk deploy

cdk.json

{
    "app": "sh cdk_hooks.sh pre && npx ts-node bin/stacks.ts && sh cdk_hooks.sh post"
    ,
    "context": {
      "@aws-cdk/core:enableStackNameDuplicates": "true",
      "aws-cdk:enableDiffNoFail": "true"
    }
  }
Run Code Online (Sandbox Code Playgroud)

cdk_hooks.sh

#!/bin/bash
PHASE=$1
case "$PHASE" in
    pre)
            # Do something
            ;;
    post)   
            # Do something
            ;;
    *)
            echo "Please provide a valid cdk_hooks phase"
            exit 64
esac
Run Code Online (Sandbox Code Playgroud)


bgd*_*nlp 5

您目前无法从 CDK 执行此操作。请参阅https://github.com/awslabs/aws-cdk/issues/2849。也许在那里添加您的 +1,让他们知道您希望看到此功能。

您可以做的是包装cdk deploy在一个 shell 脚本中,该脚本将在 CDK 完成后运行您需要的任何内容。就像是:

#!/bin/sh

cdk deploy "$@"
success=$?
if [ $success != 0 ]; then
    exit $success
fi

run_post_deploy_with_arguments.sh "$@"
Run Code Online (Sandbox Code Playgroud)

将使用给定的参数运行部署,然后调用一个 shell 脚本,如果部署成功则传递相同的参数。这是一个非常粗略的例子。