9

我在 CDK 中编写了一个堆栈,然后我正在生成模板并通过它进行部署

aws cloudformation deploy --template-file "$env:TEMP\template.json" --stack-name myStackName

在我的 Stack 对象中,如何检索上面传递给命令的“myStackName”?我尝试了.Name.StackName属性,但都没有给我这个名字。

谢谢

4

2 回答 2

10

这是通过伪参数完成的。

import * as cdk from "@aws-cdk/core";

// in your construct...
const stack = cdk.Stack.of(this);
stack.stackName
于 2020-03-17T05:53:25.650 回答
1

推荐的方法是 alukack 描述的。但你也可以这样做

Aws.STACK_NAME

但正如上面链接中所述......

CloudFormation 支持许多伪参数,这些伪参数在部署时解析为有用的值。CloudFormation 伪参数可以从 Aws 类的静态成员中获取。

通常建议从作用域的堆栈中访问伪参数,以确保生成的值符合指定堆栈,这在跨堆栈共享资源的情况下是必不可少的:

顺便说一句:我体验到stack.stackName返回了我在 CDK 中使用的堆栈的 id。CFN 中使用的正确堆栈名仅从Aws.STACK_NAME.

于 2021-02-06T08:38:35.963 回答