如何使用cdk管道在不同的环境dev,uat,prod中进行部署?

问题描述

当我承诺开发分支时,它必须将代码部署到特定的环境(dev)。同样,当我部署到uat分支时,它必须部署到uat环境。我如何在AWS CDK管道中实现此功能? 有阶段,可以部署到多个区域,但是需要定义是否推送到该分支然后再部署到该环境。

解决方法

我的团队使用内联上下文参数定义环境名称,并从环境名称中读取定义了许多环境相关参数的json配置文件。

cdk deploy --context env=Dev

我们让环境名称确定分支名称,并在“GitHubSourceAction”的“Branch”属性上进行相应设置。 (C# 代码)

string env = (string)this.Node.TryGetContext("env");

var pipeline = new CdkPipeline(this,"My-Pipeline",new CdkPipelineProps()
{
    SourceAction = new GitHubSourceAction(new GitHubSourceActionProps()
    {
        Branch = env
    })
})
,

最佳方法取决于一些因素,包括您的堆栈是否与环境无关(即是否需要从给定帐户中查找资源)。

为了在不同的帐户和地区之间进行简单切换,CDK团队提供了不错的笔迹here,它为每种环境推荐了一个小的包装脚本,该脚本通过CDK_DEPLOY_ACCOUNT和{{1}注入配置}环境变量。

如果您想提供其他合成时间上下文,则可以通过context API进行,它可以“以六种不同的方式”提供配置:

从当前的AWS账户自动获取。

通过cdk命令的--context选项。

在项目的cdk.context.json文件中。

在项目的cdk.json文件中。

在〜/ .cdk.json文件的上下文键中。

在您的AWS CDK应用程序中,使用construct.node.setContext方法。