【问题标题】:Assigning Elastic IPs to Secondary Private IPs via SecondaryPrivateIpAddresses List Attribute通过辅助私有 IP 地址列表属性将弹性 IP 分配给辅助私有 IP
【发布时间】:2017-05-14 19:18:00
【问题描述】:

下面是我的 CloudFormation 模板的 sn-p,用于将弹性 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:GetAtt 属性调用“SecondaryPrivateIpAddresses”访问辅助私有 IP 列表,这会将上面的两个辅助私有 IP 作为列表返回给我。我的问题是,如何在 JSON 中按索引处理这个列表?

例如,如果我想将私有 IP 分配给辅助 IP 列表中的第二个元素,是否可以执行以下操作:

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

我怎样才能做到这一点?我觉得它应该很简单,但我不清楚如何在 JSON 中做到这一点。

【问题讨论】:

    标签: json amazon-web-services networking amazon-cloudformation elastic-ip


    【解决方案1】:

    使用Fn::Select 内部函数按索引从对象列表中返回单个对象:

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

    【讨论】:

    • 我认为 Fn::Select 前面的括号是多余的,但我不能建议进行编辑,因为它太短了。
    • 你是对的,更新了语法,抱歉打错了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 2012-07-05
    • 2010-09-10
    • 2016-03-16
    相关资源
    最近更新 更多