由于小写,CloudFormation无法找到RDS子网组

问题描述 投票:0回答:3

我通过CloudFormation引用参数ProjectName创建了我的RDS子网组

  DB:
    Type: AWS::RDS::DBInstance
    Properties:
      DBSubnetGroupName: !Ref RDSSubnetGroup

现在的问题是CloudFormation说它无法找到我的子网组:

数据库子网组'AbcDef'不存在,因为它实际上是abcdef ...我该如何解决这个问题?

我试过寻找一个toLower功能,但似乎没有?

另一个选项似乎是重新创建堆栈?

amazon-web-services amazon-cloudformation
3个回答
2
投票

不幸的是,您在CloudFormation模板中执行的所有操作都区分大小写,包括属性名称和参数值。您可能必须重新创建堆栈。

正如你正确指出的那样,没有Fn::ToLower功能。如果你真的想要实现你想要的,那么现在唯一的方法是创建Lambda backed custom resource,它基本上会将你的字符串转换为小写并返回它但是它不值得这样做,因为你有很多挑战在处理自定义资源时会遇到。


0
投票

我还发现,在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

0
投票

我建议将function_name和DBSubnetGroup的名称重写为dbsubnetgroup

这将解决我想的问题。

© www.soinside.com 2019 - 2024. All rights reserved.