Amazon web services 在云形成中存储参数化值并引用它

Amazon web services 在云形成中存储参数化值并引用它,amazon-web-services,yaml,amazon-cloudformation,Amazon Web Services,Yaml,Amazon Cloudformation,有没有一种方法可以在Cloudformation中存储变量? 我已经创建了一个资源,其名称是以下形式的特定于阶段的名称: DeliveryStreamName: {'Fn::Sub': ['firehose-events-${Stage}', 'Stage': {'Ref' : 'Stage' }]} 现在,如果我必须在该资源上创建cloudwatch警报,我将再次遵循相同的模式: Dimensions: - Value: {'Fn::Sub': ['firehose-events-${

有没有一种方法可以在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}
的目的


还有什么我错过的吗?

遗憾的是,你没有错过任何东西参数不能在其定义中引用其他参数

我能想到的唯一办法就是通过一种习惯来做你想做的事。在最简单的形式中,宏只执行传统的
查找和替换
类型的模板处理

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