我在 CDK 中编写了一个堆栈,然后我正在生成模板并通过它进行部署
aws cloudformation deploy --template-file "$env:TEMP\template.json" --stack-name myStackName
在我的 Stack 对象中,如何检索上面传递给命令的“myStackName”?我尝试了.Name
和.StackName
属性,但都没有给我这个名字。
谢谢
我在 CDK 中编写了一个堆栈,然后我正在生成模板并通过它进行部署
aws cloudformation deploy --template-file "$env:TEMP\template.json" --stack-name myStackName
在我的 Stack 对象中,如何检索上面传递给命令的“myStackName”?我尝试了.Name
和.StackName
属性,但都没有给我这个名字。
谢谢
这是通过伪参数完成的。
import * as cdk from "@aws-cdk/core";
// in your construct...
const stack = cdk.Stack.of(this);
stack.stackName
推荐的方法是 alukack 描述的。但你也可以这样做
Aws.STACK_NAME
但正如上面链接中所述......
CloudFormation 支持许多伪参数,这些伪参数在部署时解析为有用的值。CloudFormation 伪参数可以从 Aws 类的静态成员中获取。
通常建议从作用域的堆栈中访问伪参数,以确保生成的值符合指定堆栈,这在跨堆栈共享资源的情况下是必不可少的:
顺便说一句:我体验到stack.stackName
返回了我在 CDK 中使用的堆栈的 id。CFN 中使用的正确堆栈名仅从Aws.STACK_NAME
.