#amazon-web-services #aws-cdk #aws-ssm
Вопрос:
У меня есть приложение CDK с параметром стека CloudFormation, что-то вроде:
project_name_param = cdk.CfnParameter(
self,
"ProjectName",
default="MyCoolProject",
)
Поскольку можно развернуть несколько экземпляров этого стека, я хотел бы создать параметр SSM с именем, основанным на этом названии проекта, чтобы все было организовано.
В простой облачной форме это может быть достигнуто, например, за счет:
MyCoolResourceArnParam:
Type: 'AWS::SSM::Parameter'
Properties:
Description: ARN of this project's MyCoolResource
Name: !Sub '/Projects/${ProjectName}/MyCoolResource'
Type: String
Value: !GetAtt MyCoolResourceArn
…Но я изо всех сил пытаюсь понять, как бы я использовал project_id_param
объект в CDK для достижения того же самого. Например, пытались и потерпели неудачу с различными комбинациями, подобными:
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"
),
)
Вероятно, мне не хватает чего — то базового, поскольку я все еще довольно новичок в использовании параметров CFn в CDK-может ли кто-нибудь просветить меня о том, как это должно работать?
Комментарии:
1. Так что же происходит? Какие-нибудь ошибки?
Ответ №1:
Упс, нашел проблему!
cdk.Fn
является ненужным (CDK в любом случае должен разрешить динамический «токен» в форматировании строк), но, как указано в документе simple_name
StringParameter, параметр требуется при использовании маркированного 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!
)