下面是我的 CloudFormation 模板的片段,用于将弹性 IP 地址与网络接口(interface)的主 IP 相关联:
"MyInterfaceSelfEipAssociation": {
"Properties": {
"AllocationId": "eipalloc-XXXXX",
"NetworkInterfaceId": {
"Ref": "MyInterface"
},
"PrivateIpAddress": {
"Fn::GetAtt": [
"MyInterface",
"PrimaryPrivateIpAddress"
]
}
},
"Type": "AWS::EC2::EIPAssociation"
我想对此接口(interface)上的辅助 IP 执行相同的操作,其中有两个(我在列表中给出的特定 IP,不是由 AWS 分配的)。即接口(interface)的“PrivateIpAddresses” block 如下所示:
"PrivateIpAddresses": [
{
"PrivateIpAddress": "10.X.X.XX",
"Primary": "true"
},
{
"PrivateIpAddress": "10.X.X.XX",
"Primary": "false"
},
{
"PrivateIpAddress": "10.X.X.XX",
"Primary": "false"
}
],
我知道我可以使用 Fn:GetAtt 属性调用“SecondaryPrivateIpAddresses”来访问辅助私有(private) IP 列表,这会将上面的两个辅助私有(private) IP 作为列表返回给我。我的问题是,如何通过索引在 JSON 中处理此列表?
例如,如果我想将私有(private) IP 分配给辅助 IP 列表中的第二个元素,执行以下操作是否有效:
"PrivateIpAddress": {
"Fn::GetAtt": [
"Bigip1subnet1Az1Interface",
"SecondaryPrivateIpAddresses[1]"
]
}
我怎样才能实现这个目标?我觉得它应该很简单,但我不清楚如何在 JSON 中执行此操作。
最佳答案
使用Fn::Select
按索引从对象列表中返回单个对象的内部函数:
"PrivateIpAddress": {
"Fn::Select": [
1,
{ "Fn::GetAtt": [
"Bigip1subnet1Az1Interface",
"SecondaryPrivateIpAddresses"
]}
]
}
关于json - 通过辅助私有(private) IP 地址列表属性将弹性 IP 分配给辅助私有(private) IP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41397073/