Amazon cloudformation 如何在Cloudformation中引用派生变量

Amazon cloudformation 如何在Cloudformation中引用派生变量,amazon-cloudformation,Amazon Cloudformation,我正在寻找cloudformation方面的小帮助,但无法从文档中找到帮助,或者可能没有以正确的方式搜索问题 问题是 我从以下映射中获取环境的可用性区域 "AvailabilityZone": { "Fn::Select": [ "1", { "Fn::FindInMap": [ "Environment", { "Ref": "EnvType" },

我正在寻找cloudformation方面的小帮助,但无法从文档中找到帮助,或者可能没有以正确的方式搜索问题

问题是

我从以下映射中获取环境的可用性区域

"AvailabilityZone": {
"Fn::Select": [
    "1",
    {
        "Fn::FindInMap": [
            "Environment",
            {
                "Ref": "EnvType"
            },
            "AvailabilityZones"
        ]
    }
]
}

我需要在卷命名约定中使用AZ名称。如何再次引用派生变量“AvailabilityZone”

目前我正在这样做

    {
    "Key": "Name",
    "Value": {
        "Fn::Join": [
            "-",
            [
                {
                    "Ref": "NamePrefix"
                },
                {
                    "Ref": "EnvType"
                },
                "myconstant",
                {
                    "Fn::Select": [
                        "2",
                        {
                            "Fn::Split": [
                                "-",
                                {
                                    "Fn::Select": [
                                        "1",
                                        {
                                            "Fn::FindInMap": [
                                                "Environment",
                                                {
                                                    "Ref": "EnvType"
                                                },
                                                "AvailabilityZones"
                                            ]
                                        }
                                    ]
                                }
                            ]
                        }
                    ]
                }
            ]
        ]
    }
}
我正在做两次相同的代码。
我如何在这里重复使用派生变量?

不幸的是,简短的回答是您不能。希望有一天AWS支持云信息中的变量

有些黑客可能会感兴趣。强调黑客

  • 使用云形成预处理器,做你想要的(例如,对流层)
  • 使用输出该值的自定义资源,然后使用
    GetAtt
    引用该值。()
  • 使用
    AWS::Include
    转换来引用S3()中的模板片段,在这种情况下,您并没有真正使用变量