gpt4 book ai didi

amazon-web-services - 如何将 SSM 参数存储 StringList 正确映射到 Lambda VpcConfig 部分

转载 作者:行者123 更新时间:2023-12-02 16:52:20 24 4
gpt4 key购买 nike

我是 Cloudformation 新手(来自 Terraform)。我在SSM中有一个参数

Key: /qa0/myService/lambda/subnetIds
Value: subnet-1234abcd, subnet-5678abcd
Type: StringList

我想要dynamically reference VpcConfig中的此参数Cloudformation 模板中 Lambda 的部分,但我没有得到正确的东西。我尝试过很多不同的事情。另外,我正在使用 StackEnv参数以允许在多个环境中重用,因此该参数将填充为 qa0、qa1 等。


VpcConfig:
SecurityGroupIds: !Ref VpcSecurityGroupIds
SubnetIds: !Sub '{{resolve:ssm:/${StackEnv}/myService/lambda/subnetIds:1}}'

结果:“属性 SubnetIds 的值必须是字符串列表类型”


VpcConfig:
SecurityGroupIds: !Ref VpcSecurityGroupIds
SubnetIds: [!Split [",", !Sub '{{resolve:ssm:/${StackEnv}/myService/lambda/subnetIds:1}}']]

结果:“子网 ID 'subnet-1234abcd,subnet-5678abcd' 不存在”。由于某种原因,它没有在这里拆分 StringList。

编辑:按照评论中建议的 404 从此处的数组中取出 Split ( SubnetIds: !Split [ ",", !Sub '{{resolve:ssm:/${StackEnv}/myService/lambda/subnetIds:1}}'] ) 会得到相同的结果。


如果我尝试defining the SSM parameter as a Cloudformation template parameter ( AWS::SSM::Parameter::Value<List<String>> ),我陷入困境,因为我需要默认值来替换 StackEnv并且不是静态字符串,这是不受支持的。模板提示默认值必须是字符串。


我尝试过将动态查找结果嵌套在方括号中的各种版本,但没有成功:

SubnetIds: [ !Sub '{{resolve:ssm:/${StackEnv}/myService/lambda/subnetIds:1}}' ]

我在这里做错了什么?

最佳答案

我向 AWS 官方支持人员确认 - CloudFormation 是“在内联引用之前执行内部函数,这是 CloudFormation 的错误行为”。 (他们的话)需要明确的是,错误行为对于我和这个 SubnetIds 字段来说是 100% 一致的。

关于amazon-web-services - 如何将 SSM 参数存储 StringList 正确映射到 Lambda VpcConfig 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57970690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com