从AWS CDK中SSM参数名称内的堆栈参数中命名SSM参数



我有一个带有CloudFormation Stack参数的CDK应用程序,类似于:

project_name_param = cdk.CfnParameter(
self,
"ProjectName",
default="MyCoolProject",
)

由于可以部署该堆栈的多个实例,我想基于该项目名称创建一个名称为的SSM参数,以保持事情的有序性。

在普通CloudFormation中,这可以通过以下方式实现:

MyCoolResourceArnParam:
Type: 'AWS::SSM::Parameter'
Properties:
Description: ARN of this project's MyCoolResource
Name: !Sub '/Projects/${ProjectName}/MyCoolResource'
Type: String
Value: !GetAtt MyCoolResourceArn

但我很难弄清楚如何在CDK中使用project_id_param对象来实现同样的事情。例如,尝试过各种组合,但都失败了,类似于:

input_bucket_ssm_param = ssm.StringParameter(
self,
"MyCoolResourceSSMParam",
string_value=my_cool_resource.arn,
description="...",
parameter_name=cdk.Fn.sub(
f"/Projects/{project_name_param.value_as_string}/MyCoolResource"
),
)

也许我错过了一些基本的东西,因为在CDK中使用CFn参数仍然很新——有人能告诉我它应该如何工作吗?

Whoops,发现问题了!

cdk.Fn是不必要的(CDK应该在字符串格式中解析动态"令牌"(,但正如StringParameter文档中所指出的,当使用令牌化的parameter_name时,simple_name参数是必需的。

input_bucket_ssm_param = ssm.StringParameter(
self,
"MyCoolResourceSSMParam",
string_value=my_cool_resource.arn,
description="...",
parameter_name=f"/Projects/{project_name_param.value_as_string}/MyCoolResource",
simple_name=False,  # < Need this too!
)

最新更新