我通过CloudFormation引用参数ProjectName创建了我的RDS子网组
DB:
Type: AWS::RDS::DBInstance
Properties:
DBSubnetGroupName: !Ref RDSSubnetGroup
现在的问题是CloudFormation说它无法找到我的子网组:
数据库子网组'AbcDef'不存在,因为它实际上是abcdef ...我该如何解决这个问题?
我试过寻找一个toLower功能,但似乎没有?
另一个选项似乎是重新创建堆栈?
不幸的是,您在CloudFormation
模板中执行的所有操作都区分大小写,包括属性名称和参数值。您可能必须重新创建堆栈。
正如你正确指出的那样,没有Fn::ToLower
功能。如果你真的想要实现你想要的,那么现在唯一的方法是创建Lambda backed custom resource
,它基本上会将你的字符串转换为小写并返回它但是它不值得这样做,因为你有很多挑战在处理自定义资源时会遇到。
我还发现,在RDS控制台中查看时,DB子网组的名称会强制更改为小写。很不寻常的行为。
但是,我在CloudFormation中创建了它们,并没有导致您描述的错误。以下是我的CloudFormation模板中的位:
###########
# DB Subnet Group
###########
DBSubnetGroup:
Type: AWS::RDS::DBSubnetGroup
Properties:
DBSubnetGroupDescription: Lab DB Subnet Group
DBSubnetGroupName: Lab DB Subnet Group
SubnetIds:
- !Ref PrivateSubnet1
- !Ref PrivateSubnet2
Tags:
-
Key: Name
Value: DBSubnetGroup
###########
# RDS Database
###########
RDSDatabase:
Type: AWS::RDS::DBInstance
Properties:
DBName: inventory
DBInstanceIdentifier: inventory-db
AllocatedStorage: 5
DBInstanceClass: db.t2.micro
Engine: MySQL
MasterUsername: master
MasterUserPassword: lab-password
MultiAZ: false
DBSubnetGroupName: !Ref DBSubnetGroup
VPCSecurityGroups:
- !Ref DBSecurityGroup
Tags:
-
Key: Name
Value: inventory-db
我建议将function_name和DBSubnetGroup
的名称重写为dbsubnetgroup
这将解决我想的问题。