gpt4 book ai didi

amazon-web-services - AWS 特定参数和 EC2 SecurityGroupIds 列表字符串错误

转载 作者:行者123 更新时间:2023-12-02 03:11:11 26 4
gpt4 key购买 nike

我有一个相当烦人的问题,无法解决,我会尽力解释。

在以下简化示例中,我可以引用参数并通过 SecurityGroupIds 属性将安全组分配给我的实例:

"Parameters" : {
"pDefaultSg" : {
"Description" : "AWS2 VPC default security groups",
"Type" : "List<AWS::EC2::SecurityGroup::Id>",
"Default" : "sg-245xxxxx,sg-275xxxxx,sg-235xxxxx"
}
}

"Resources" : {
"ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"SecurityGroupIds" : { "Ref" : "pDefaultSg" }
}
}

当我还想向引用同一模板中实例化的安全组资源的 SecurityGroupIds 属性添加第二个值时,问题就开始了:

"Resources" : {
"ec2Instance" : { ...
"SecurityGroupIds" : [ { "Ref" : "pDefaultSg" }, { "Fn::GetAtt" : "sgDb", "GroupId" } ],
....

"sgDb" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : { ...

然后,我无法避免导致 Cloudformation 堆栈回滚的以下错误:

属性 SecurityGroupIds 的值必须是字符串列表类型

我真的很感激任何指点。

非常感谢

最佳答案

问题是,当通过 Ref 内部函数访问 pDefaultSg 时,它会返回一个列表,因此您的 SecurityGroupIds 属性看起来像

[["sg-245xxxxx","sg-275xxxxx","sg-235xxxxx"],"sg-1234DB"]

解决方案是将您的 SecurityGroupIds 属性更改为 Fn::Join,将 pDefaultSg 列表更改为逗号分隔的字符串,后跟 sgDb:

"SecurityGroupIds": [ 
{"Fn::Join":
[",",
{"Ref": "pDefaultSg"}
]
},
{ "Fn::GetAtt" : ["sgDb", "GroupId"] }
]

关于amazon-web-services - AWS 特定参数和 EC2 SecurityGroupIds 列表字符串错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40006882/

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