在云计算中可以创build一个可重用的string?

我有一个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}" }