有没有办法在Cloudformation中存储变量? 我用以下形式创建了一个资源,该名称的名称是阶段特定的名称:
DeliveryStreamName: {'Fn::Sub': ['firehose-events-${Stage}', 'Stage': {'Ref' : 'Stage' }]}
现在,如果我要在该资源上创建一个云监视警报,我将再次遵循相同的模式:
Dimensions:
- Value: {'Fn::Sub': ['firehose-events-${Stage}', 'Stage': {'Ref' : 'Stage' }]}
相反,如果我可以将整个值存储在一个变量中,对我来说引用起来会容易得多。
我认为最初是将其存储在参数中,例如:
Parameters:
FirehoseEvent: {Type:String, Default: 'firehose-events-${Stage}'}
但是阶段值似乎没有在这里传递。此资源名称也没有非默认值。
我考虑的另一种选择是使用映射,但这违反了使用${Stage}
的目的。
还有其他我想念的方式吗?
答案 0 :(得分:0)
可悲的是您什么都没错过。 参数无法在其定义中引用其他参数。
我想想到的唯一方法就是通过自定义macro做您自己的事情。宏以其最简单的形式仅执行传统的find-and-replace
类型的模板处理。
但是,至少在您为问题提供的这个简单示例中,开发这种宏所需的时间可能不值得其收益。