amazon-web-services - If else 条件云的形成
问题描述
我想根据输入参数在 cloudformation 中填充一个值。我想分配Name
为test-svc.abc.com
或者svc.abc.com
取决于环境名称是否prod
。如果环境名称是,prod
那么值应该是svc.abc.com
,否则它应该总是{env-name}-svc.abc.com
。
我有以下表达式:
Name: !Join [ '-', [ !Ref EnvironmentName, !Ref 'HostedZoneName' ] ]
在上面的表达式中,HostedZoneName
将被传递为svc.abc.com
并且的值EnvironmentName
可能是test, release or prod
。所以条件应该被评估为:
Inputs: HostedZoneName -> svc.abc.com, EnvironmentName -> test
Output: test-svc.abc.com
Inputs: HostedZoneName -> svc.abc.com, EnvironmentName -> release
Output: release-svc.abc.com
Inputs: HostedZoneName -> svc.abc.com, EnvironmentName -> 1234567
Output: 1234567-svc.abc.com
Inputs: HostedZoneName -> svc.abc.com, EnvironmentName -> prod
Output: svc.abc.com
它基本上是三元运算符。
Name = EnvironmentName.equals("prod") ? HostedZoneName : EnvironmentName + "-" + HostedZoneName
在 CloudFormation 中遇到 if else 条件。
解决方案
看看Cloudformation 条件。您可以使用它们来定义 if 语句Fn::If
然后,您可以在参考资料部分使用此条件来定义如何构建您的HostedZoneName
.
这是一个例子。您可能需要执行以下操作:
...
"Conditions" : {
"CreateProdResources" : {"Fn::Equals" : [{"Ref" : "EnvType"}, "prod"]}
},
...
"Properties" : {
"HostedZoneName" : {
"Fn::If" : [
"CreateProdResources",
"svn.abc.com",
{"Fn::Sub": "${Environment}-svc.abc.com"}
]}
},
推荐阅读
- visual-studio-code - 我可以在 Visual Studio 代码中添加自定义默认代码吗
- python - 将 2 个向量的元素转换为矩阵的 Python 乘积
- java - 如何在开发 Harmony 应用程序时将标签内的图像添加为图标?
- unity3d - Unity 2d 中是否有任何功能,当我死时游戏结束屏幕只有在死亡动画完成后才会出现
- reactjs - FIrebase Google Auth 注销错误连接被拒绝
- python-3.x - numpy-1.19.5 不是此平台上支持的轮子,(RHEL 7.9 64 位)
- excel - 在工作表中插入缺少的列并将数据粘贴到新的 Excel 中
- html - 如何使用css在标题下放置线条和点
- android-studio - 插件错误:插件“Visual Paradigm SDE for IntelliJ IDEA(社区版)”不兼容(仅在 IntelliJ IDEA 中支持)
- c++ - 我可以将矩形范围转换为增强多边形吗?