从 AWS CDK 中 SSM 参数名称中的堆栈参数命名 SSM 参数
Name an SSM parameter from a stack parameter within an SSM parameter name in AWS CDK
我有一个带有 CloudFormation 堆栈参数的 CDK 应用程序:
project_name_param = cdk.CfnParameter(
self,
"ProjectName",
default="MyCoolProject",
)
由于可以部署此堆栈的多个实例,我想创建一个 SSM Parameter 名称基于此项目名称,以使事情井井有条。
在普通的 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 参数仍然很新 - 谁能告诉我它应该如何工作?
哎呀,找到问题了!
cdk.Fn
是不必要的(CDK 无论如何都应该在字符串格式中解析动态“令牌”),但是如 the StringParameter doc 中所述,使用 simple_name
参数是必需的标记化 parameter_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!
)
我有一个带有 CloudFormation 堆栈参数的 CDK 应用程序:
project_name_param = cdk.CfnParameter(
self,
"ProjectName",
default="MyCoolProject",
)
由于可以部署此堆栈的多个实例,我想创建一个 SSM Parameter 名称基于此项目名称,以使事情井井有条。
在普通的 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 参数仍然很新 - 谁能告诉我它应该如何工作?
哎呀,找到问题了!
cdk.Fn
是不必要的(CDK 无论如何都应该在字符串格式中解析动态“令牌”),但是如 the StringParameter doc 中所述,使用 simple_name
参数是必需的标记化 parameter_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!
)