RDS with Cloud Formation and AZ issues

后端 未结 4 907
北海茫月
北海茫月 2021-02-18 13:15

I am using cloud formation to create a setup containing an RDS instance.

I am having some difficulties creating the RDS Instance on the account of the following error:

4条回答
  •  [愿得一人]
    2021-02-18 14:12

    Yes, even for a deployment entirely contained within a single Availability Zone [AZ], you must create an extra subnet in a different AZ and include it in your DB Subnet Group. The rationale for this requirement is to support high-availability Multi-AZ deployments, as noted in the Working with a DB Instance in a VPC section of the RDS User Guide:

    For Multi-AZ deployments, defining a subnet for two or more Availability Zones in a region allows Amazon RDS to create a new standby in another Availability Zone should the need arise. You need to do this even for Single-AZ deployments, just in case you want to convert them to Multi-AZ deployments at some point.

    As for not burdening your users with selecting another AZ just for this, there are ways to accomplish this. For example, you could select a secondary AZ automatically using the Fn::GetAZs and Fn::Select intrinsic functions. If you allow the user to select the primary AZ, you'll also need a Condition to ensure the secondary AZ doesn't equal the primary AZ selected.

    Here's an example template snippet:

    Parameters:
      PrimaryAZ:
        Type: AWS::EC2::AvailabilityZone::Name
        Description: Primary AZ
    Conditions:
      IsFirstPrimaryAZ:
        Fn::Equals:
        - !Ref PrimaryAZ
        - Fn::Select [0, {Fn::GetAZs: ""}]
    Resources:
      Subnet1:
        Type: "AWS::EC2::Subnet"
        Properties:
          AvailabilityZone: !Ref PrimaryAZ
          # ...
      Subnet2:
        Type: "AWS::EC2::Subnet"
        Properties:
          AvailabilityZone:
            Fn::If:
            - IsFirstPrimaryAZ
            - Fn::Select [1, {Fn::GetAZs: ""}]
            - Fn::Select [0, {Fn::GetAZs: ""}]
          # ...
    

提交回复
热议问题