首页 > 解决方案 > 在云形成中存储参数化值并引用它

问题描述

有没有办法在 Cloudformation 中存储变量?我创建了一个资源,其名称是特定于阶段的名称,格式如下:

DeliveryStreamName: {'Fn::Sub': ['firehose-events-${Stage}', 'Stage': {'Ref' : 'Stage' }]}

现在,如果我必须在该资源上创建 cloudwatch 警报,我将再次遵循相同的模式:

Dimensions:
   - Value: {'Fn::Sub': ['firehose-events-${Stage}', 'Stage': {'Ref' : 'Stage' }]}

相反,如果我可以将整个值存储在一个变量中,那么引用它会容易得多。

我最初认为将其存储在参数中,如下所示:

Parameters:
   FirehoseEvent: {Type:String, Default: 'firehose-events-${Stage}'}

但是舞台价值似乎没有在这里传递。此资源名称也没有非默认值。我考虑的另一个选项是使用映射,但这违背了使用${Stage}.

还有其他我错过的方式吗?

标签: amazon-web-servicesyamlamazon-cloudformation

解决方案


可悲的是你没有错过任何东西。参数不能在其定义中引用其他参数。

我能想到的唯一方法就是通过自定义来做你的事情。在其最简单的形式中,宏只会执行传统find-and-replace类型的模板处理。

但是,开发此类宏所需的时间可能不值得它的好处,至少在您在问题中提供的这个简单示例中。


推荐阅读