1

下面是用于将弹性IP地址与网络接口的主IP关联我的CloudFormation模板的一个片段:通过SecondaryPrivateIpAddresses列表分配弹性IP地址来次专用的IP属性

 "MyInterfaceSelfEipAssociation": { 
     "Properties": { 
      "AllocationId": "eipalloc-XXXXX", 
      "NetworkInterfaceId": { 
       "Ref": "MyInterface" 
      }, 
      "PrivateIpAddress": { 
       "Fn::GetAtt": [ 
        "MyInterface", 
        "PrimaryPrivateIpAddress" 
       ] 
      } 
     }, 
     "Type": "AWS::EC2::EIPAssociation" 

我想要做的这个接口上的辅助IP地址也是一样的,其中有两个(我在列表中给出了特定的IP地址,而不是由AWS分配)。即接口的“PrivateIpAddresses”块看起来是这样的:

   "PrivateIpAddresses": [ 
       { 
        "PrivateIpAddress": "10.X.X.XX", 
        "Primary": "true" 
       }, 
       { 
        "PrivateIpAddress": "10.X.X.XX", 
        "Primary": "false" 
       }, 
       { 
        "PrivateIpAddress": "10.X.X.XX", 
        "Primary": "false" 
       } 
      ], 

我知道我可以访问使用Fn二次私有IP地址的列表:GetAtt属性称之为“SecondaryPrivateIpAddresses”,这将返回上面的两个辅助私有IP地址以我的名单。我的问题是,我怎样才能解决这个名单在JSON - 索引?

例如,如果我想的私有IP分配给次级iPS列表中的第二个元素,是有效的做一些事情,如:

   "PrivateIpAddress": { 
       "Fn::GetAtt": [ 
        "Bigip1subnet1Az1Interface", 
        "SecondaryPrivateIpAddresses[1]" 
       ] 
      } 

我怎样才能做到这一点?我觉得它应该是直截了当的,但我不清楚如何在JSON中执行此操作。

回答

2

使用Fn::Select内在功能,通过指数从对象列表返回一个对象:

 "PrivateIpAddress": { 
      "Fn::Select": [ 
      1, 
      { "Fn::GetAtt": [ 
       "Bigip1subnet1Az1Interface", 
       "SecondaryPrivateIpAddresses" 
      ]} 
      ] 
     } 
+1

我相信FN前方的支架::选择是无关的,但我不能提出修改建议因为它太短。 –

+0

你是对的,更新了语法,对错误感到抱歉! – wjordan