在云形成中存储参数化值并进行引用

时间:2020-08-29 02:57:20

标签: amazon-web-services yaml amazon-cloudformation

有没有办法在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}的目的。

还有其他我想念的方式吗?

1 个答案:

答案 0 :(得分:0)

可悲的是您什么都没错过。 参数无法在其定义中引用其他参数

我想想到的唯一方法就是通过自定义macro做您自己的事情。宏以其最简单的形式仅执行传统的find-and-replace类型的模板处理。

但是,至少在您为问题提供的这个简单示例中,开发这种宏所需的时间可能不值得其收益。