使用 CDK Deploy 时如何更改 StackName

sma*_*rds 12 amazon-web-services aws-cloudformation aws-cdk

我有一个非常简单的 cdk 项目:

import * as cdk from '@aws-cdk/core';
import { TestStack } from '../lib/test-stack';

const app = new cdk.App();
new TestStack(app, 'TestStack');
Run Code Online (Sandbox Code Playgroud)

我可以使用 cdk deploy 轻松部署堆栈,并且堆栈的名称在 AWS 上为“TestStack”。到目前为止,一切都很好。但是我想控制cloudformation中堆栈的名称。有什么方法可以 fdo cdk 部署并更改 AWS 中堆栈的默认名称吗?

像 cdk deploy --stack-name SomeName 这样的东西?((堆栈名称是一个组成的命令))

我想知道这一点,因为我希望能够构建一个部署系统,该系统可以从单个 cdk 项目构建多个堆栈。根据输入参数,每个堆栈都会略有不同。就像是

cdk deploy --stackName Stack1 --parameters parameters1
cdk deploy --stackName Stack2 --parameters parameters2
cdk deploy --stackName Stack3 --parameters parameters3
Run Code Online (Sandbox Code Playgroud)

我最终将在 AWS 中同时拥有 Stack1、Stack2 和 Stack3。

小智 11

我是根据上下文做的

//Get data from Conext
const stackName = app.node.tryGetContext('stackName')
new TestCdkProjectStack(app, 'TestCdkProjectStack', {stackName: stackName});
Run Code Online (Sandbox Code Playgroud)

使用--context选项运行 CDK 部署:

cdk deploy --context stackName=YourStack
Run Code Online (Sandbox Code Playgroud)

您还可以在cdk.json文件中添加上下文数据


Bal*_*ala 7

我们可以将 stackName 作为属性传递,如果不传递,则使用 IdHelloCdkStack作为堆栈名称。

我们可以将类似 stackName 的内容传递process.env.STACK_NAME给 stackName 并从命令行覆盖它

const app = new cdk.App();
const env = { account: CRM, region: AWS_REGION };
new HelloCdkStack(app, "HelloCdkStack", {
  env,
  stackName: process.env.STACK_NAME,
});
Run Code Online (Sandbox Code Playgroud)

然后

export STACK_NAME=MyStack1;cdk deploy
       OR
export STACK_NAME=MyStack2;cdk deploy --stackName MyStack2
Run Code Online (Sandbox Code Playgroud)