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