AWS CloudFormation RDS实例无法创建 - 无法找到DBCluster

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

我正在玩cloudformation并遇到DBSubnetGroup的一个问题,我无法解决这个问题。我的目标是构建一个简单的设置:

  • 具有两个子网的VPC
  • 这些子网上的RDS数据库子网组
  • 该子网中的RDS数据库集群
  • 该群集中的单个RDS实例

在cloudformation中,我不断收到错误:

Could not find DB Cluster: MyRDSClusterId (Service: AmazonRDS; Status Code: 
404; Error Code: DBClusterNotFoundFault; Request ID: ...)

一切看起来都对我而言,cloudformation说我的DBCluster是正确创建的。我在这做错了什么?任何对我做错的见解都将不胜感激。

这是我的cloudformation模板:

AWSTemplateFormatVersion: "2010-09-09"
Description: Stack with DBSubnetGroup, DBCluster, and one DBInstance
Resources:
  MyAppVPC:
    Type: AWS::EC2::VPC
    Properties:
      CidrBlock: 192.168.0.0/16
      EnableDnsSupport: true
      EnableDnsHostnames: true
      InstanceTenancy: default
  MyAppRDSSubnetA:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: us-east-1a
      VpcId: !Ref MyAppVPC
      CidrBlock: 192.168.0.0/24
      MapPublicIpOnLaunch: true
  MyAppRDSSubnetB:
    Type: AWS::EC2::Subnet
    Properties:
      AvailabilityZone: us-east-1b
      VpcId: !Ref MyAppVPC
      CidrBlock: 192.168.1.0/24
      MapPublicIpOnLaunch: true
  MyDBSubnetGroup:
    Type: AWS::RDS::DBSubnetGroup
    Properties:
      DBSubnetGroupDescription: My App DBSubnetGroup for RDS
      SubnetIds:
        - !Ref MyAppRDSSubnetA
        - !Ref MyAppRDSSubnetB
  MyRDSCluster:
    Type: AWS::RDS::DBCluster
    Properties:
      BackupRetentionPeriod: 1
      DatabaseName: MyDB
      DBClusterIdentifier: MyRDSClusterId
      DBSubnetGroupName: !Ref MyDBSubnetGroup
      Engine: aurora
      MasterUsername: exampleUsername
      MasterUserPassword: examplePassword
  MyRDSInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      DBClusterIdentifier: !Ref MyRDSCluster
      DBInstanceClass: db.t2.small
      DBSubnetGroupName: !Ref MyDBSubnetGroup
      Engine: aurora      
amazon-web-services amazon-cloudformation amazon-rds
2个回答
1
投票

DBClusterIdentifier名称中的某些字符为大写。它的作用是什么,它会自动将所有大写字符转换为小写字母。现在,当您尝试在DBCluster下附加DBInstances时,它无法找到您提到的DBClusterIdentifier,因为它包含一些大写。

MyRDSCluster:
    Type: AWS::RDS::DBCluster
    Properties:
      BackupRetentionPeriod: 1
      DatabaseName: MyDB
      DBClusterIdentifier: MyRDSClusterId <- here it converts all string to lowercase
      DBSubnetGroupName: !Ref MyDBSubnetGroup
      Engine: aurora
      MasterUsername: exampleUsername
      MasterUserPassword: examplePassword
  MyRDSInstance:
    Type: AWS::RDS::DBInstance
    Properties:
      DBClusterIdentifier: !Ref MyRDSCluster <- here it does not, so mismatch in name
      DBInstanceClass: db.t2.small
      DBSubnetGroupName: !Ref MyDBSubnetGroup
      Engine: aurora

解决方案是:以小写字母提供DBClusterIdentifier。

我希望你得到你的答案:)


1
投票

我从群集定义中删除了“DBClusterIdentifier”属性,突然一切正常。希望有一天能帮到别人。

现在它看起来像:

  MyRDSCluster:
    Type: AWS::RDS::DBCluster
    Properties:
      BackupRetentionPeriod: 1
      DatabaseName: My
      DBSubnetGroupName: !Ref MyDBSubnetGroup
      Engine: aurora
      MasterUsername: exampleUsername
      MasterUserPassword: examplePassword

希望有一天能帮到别人。

我不得不说,我不确定我完全理解为什么这解决了这个问题,并且解释会有所帮助(我已经找了一段时间没有运气)。为什么我不能在此模板中指定自己的DBClusterIdentifier?

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