我有一个string是由许多variables,我用于许多不同的东西,如标签和主机名称形成的。
有没有办法创build一个可重用的string,我可以只是引用虽然出模板?
对此的任何想法将不胜感激。 编辑:一个例子将传递2个参数,如ProjectName和环境join他们
"Fn::Join" : [ "-", [ {"Ref":"ProjectName"}, {"Ref":"Environment"} ] ]
并在一些地方使用结果
不幸的是,我的实验是赞同Graeme的结论。 我已经挣扎了一段时间,但没有find一种方式来计算一个string通过Fn :: Join,并保留它以后在模板中。
我可以跟大家分享一个典型的例子吗?
截至2014年9月18日,在Resources部分存储string值的最复杂的方式是通过(二级)Mapping。 更好的是,我可以预先计算一个条件,并确定是否使用该string。 但不幸的是,一个string的存储不起作用。
这是一个这样的映射的例子节…
"LoadBalancerBucketMap": { "BucketName": { "string": { "Fn::Join": [ "-", [ "mylb", { "Ref": "Environment" }, "logs" ] ] } } },
这里是一个资源中的访问expression式
"S3BucketName": { "Fn::FindInMap": [ "LoadBalancerBucketMap", "BucketName", "string" }
在这个例子中,Environment是一个默认方便的文本string参数。 所以这是创build和重新使用string的一个非常明显的例子。 但这里是CloudFormation处理器所说的…
模板validation错误:模板格式错误:每个Mappings属性必须是一个string或一个列表。
所以我分享你的挫折,似乎没有在模板中提供临时stringvariables的效果的方法。
…据我所知, 但是你最初收到的答案却说明了与此相反的情况(尽pipe没有一个例子)。
所以如果有人有一个示例解决方法,那么请他们能分享?
您可以使用参数或映射来存储您可以在模板中使用的string。
不幸的是,我发现不可能做我想做的事情。 它没有帮助,但它在那里。
在aws cloudformation deploy
期间,我们实际上使我们的CloudFormation堆栈名称正好{ProjectName}-{Environment}
。 你有没有考虑过你的堆栈名称这个命名约定?
之后,您可以将其引用为{ "Fn:Sub": "${AWS::StackName}" }
。