amazon-web-services - 在云形成中存储参数化值并引用它
问题描述
有没有办法在 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}
.
还有其他我错过的方式吗?
解决方案
可悲的是你没有错过任何东西。参数不能在其定义中引用其他参数。
我能想到的唯一方法就是通过自定义宏来做你的事情。在其最简单的形式中,宏只会执行传统find-and-replace
类型的模板处理。
但是,开发此类宏所需的时间可能不值得它的好处,至少在您在问题中提供的这个简单示例中。
推荐阅读
- wpf - WPF MenuItem MouseOver 不会改变背景颜色
- game-engine - UE4如何限制On组件Hit注册碰撞时
- python - Python 没有正确调用函数
- sql - 访问,如果匹配更新当前单元格,则在另一个表中查找数据
- c# - 使用 C# 将 D365 与 RabbitMQ 集成以在队列中读取和写入数据
- spring-boot - 如何为使用泛型的拦截器编写测试类
- javascript - 在 Vue.js 中出现验证错误时如何突出显示输入的边框颜色?
- python - 有什么方法可以传递 args 值来传递 django celery 定期任务?
- single-sign-on - 使用不同域的 Auth0 自动登录 - 使用多个域的 Auth0 单点登录
- c# - 图像在 collectionview 中加载速度非常慢,这也使我的滚动冻结并运行缓慢