在 cloudformation 中是否可以创建可重用的字符串?

Gra*_*eme 15 amazon-web-services amazon-cloudformation

我有一个字符串,它由许多变量组成,我将这些变量用于许多不同的事物,例如标签和主机名。

有没有办法创建一个可重用的字符串,我可以通过模板引用它?

对此的任何想法将不胜感激。编辑:一个例子是传入 2 个参数,例如 ProjectName 和 Environment 加入它们

"Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ]
Run Code Online (Sandbox Code Playgroud)

并在许多地方使用结果

joh*_*hnz 7

不幸的是,我的实验与格雷姆的结论一致。我已经为此苦苦挣扎了一段时间,但没有找到一种通过 Fn::Join 计算字符串并将其保留在模板中的方法。

我可以和你分享一个典型的例子吗?

截至 2014 年 9 月 18 日,在资源部分存储字符串值以供重用的最复杂方法是​​通过(二级)映射。更好的是,我可以预先计算条件并确定是否使用字符串。但不幸的是,字符串的存储是行不通的。

这是此类映射的示例节……

    "LoadBalancerBucketMap": {
        "BucketName": {
            "string": {
                "Fn::Join": [
                    "-",
                    [
                        "mylb",
                        {
                            "Ref": "Environment"
                        },
                        "logs"
                    ]
                ]
            }
        }
    },
Run Code Online (Sandbox Code Playgroud)

这是资源中对它的访问表达式

                "S3BucketName": {
                    "Fn::FindInMap": [
                        "LoadBalancerBucketMap",
                        "BucketName",
                        "string"
                    }
Run Code Online (Sandbox Code Playgroud)

在这个例子中,Environment 是一个带有方便默认值的文字字符串参数。所以这是创建和重用字符串的一个非常清楚的例子。但这是 CloudFormation 处理器所说的……

模板验证错误:模板格式错误:每个映射属性都必须是字符串或列表。

所以我和你一样沮丧,模板中似乎没有办法提供临时字符串变量的效果。

……据我所知。但是您最初收到的答案与此相反(尽管没有示例)。

因此,如果有人确实有示例解决方法,那么请他们分享一下吗?