如何解决Cloudformation 的条件语句Glue 的子网
我需要我的 glue 作业根据它运行的环境使用特定的子网。下面的行 subnetId
抛出语法错误。我在 aws 的文档中读到,真/假评估可以用 !Ref
解决,问题似乎出在条件语法上。
subnetId: !If [!Ref UseProdCondition,!Ref PrivatesubnetAz2,!Ref PrivatesubnetAz3]
glueJDBCConnection:
Type: AWS::glue::Connection
UseProdCondition: !Equals [!Ref "${AppEnv}","production"]
Properties:
CatalogId: !Ref AWS::AccountId
ConnectionInput:
ConnectionType: "JDBC"
ConnectionProperties:
USERNAME: !Ref Username
PASSWORD: !Ref Password
JDBC_CONNECTION_URL: !Ref glueJDBCStringTarget
sslMode: 'required'
PhysicalConnectionRequirements:
AvailabilityZone:
Ref: AvailabilityZone2
SecurityGroupIdList:
- Fn::GetAtt: glueJobSecurityGroup.GroupId
subnetId: !If [!Ref UseProdCondition,!Ref PrivatesubnetAz3]
Name: !Ref JDBCConnectionName
解决方法
Condition 需要定义为一个单独的资源,稍后在特定资源中引用。
谢谢@MisterSmith!
AWSTemplateFormatVersion: 2010-09-09
Description: AWS Glue Spark Job
Conditions:
UseProdCondition: !Equals [!Ref AppEnv,"production"]
GlueJDBCConnection:
Type: AWS::Glue::Connection
Properties:
CatalogId: !Ref AWS::AccountId
ConnectionInput:
ConnectionType: "JDBC"
ConnectionProperties:
USERNAME: !Ref Username
PASSWORD: !Ref Password
JDBC_CONNECTION_URL: !Ref GlueJDBCStringTarget
sslMode: 'REQUIRED'
PhysicalConnectionRequirements:
AvailabilityZone:
Ref: AvailabilityZone2
SecurityGroupIdList:
- Fn::GetAtt: GlueJobSecurityGroup.GroupId
#SubnetId: !Ref PrivateSubnetAz2
SubnetId: !If [UseProdCondition,!Ref PrivateSubnetAz2,!Ref PrivateSubnetAz3]
Name: !Ref RTMIJDBCConnectionName
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。