クラウドフォーメーションを使用して、RDSインスタンスを含むセットアップを作成しています。
次のエラーのため、RDSインスタンスの作成に問題があります。
DBサブネットグループは、アベイラビリティーゾーンのカバレッジ要件を満たしていません。少なくとも2つのアベイラビリティーゾーンをカバーするサブネットを追加してください。現在のカバレッジ:1
問題は、セットアップ全体が単一のAZ上にあることです...私は何をすべきですか? RDSのためだけに何も含まれていない別のAZに追加のサブネットを作成するだけですか?
AWSがそのサブネットを自動的に作成し、私をその混乱から解放する方法があるかもしれません。その余分なサブネットは必要ありません。また、このためだけに別のAZを選択することでユーザーに負担をかけたくありません。
はい。単一のアベイラビリティーゾーン[AZ]内に完全に含まれるデプロイメントの場合でも、別のAZに追加のサブネットを作成し、それをDBサブネットグループに含める必要があります。この要件の理論的根拠は、RDSユーザーガイドの VPCでのDBインスタンスの操作 セクションに記載されているように、高可用性マルチAZデプロイメントをサポートすることです。
マルチAZデプロイメントの場合、リージョン内の2つ以上のアベイラビリティーゾーンのサブネットを定義すると、Amazon RDSは、必要に応じて別のアベイラビリティーゾーンに新しいスタンバイを作成できます。ある時点でマルチAZデプロイメントに変換する場合に備えて、シングルAZデプロイメントでもこれを行う必要があります。
これだけのために別のAZを選択することでユーザーに負担をかけないことに関しては、これを達成する方法があります。たとえば、 Fn::GetAZs
および Fn :: Select 組み込み関数を使用してセカンダリAZを自動的に選択できます。ユーザーがプライマリAZを選択できるようにする場合は、セカンダリAZが選択したプライマリAZと等しくないようにするために、 条件 も必要になります。
テンプレートスニペットの例を次に示します。
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: ""}]
# ...
はい。サブネットの1つを削除し、別のアベイラビリティーゾーンで同じサブネットを再度作成するだけです。
この問題に関する詳細を追加するだけです。 RDS>サブネットグループでサブネットグループを評価する際の問題を解決しました。 (サブネットグループは、RDSコンテキストにのみ存在する概念です。VPCコンテキストには存在しません)
私の場合、パーソナライズされたVPC(デフォルトのVPCではない)を選択してRDS Mysqlを最初に作成しようとしたときに自動的に作成されたサブネットグループがありましたが、RDSスクリプトはVPCから最初の3つのサブネットを選択するサブネットグループを作成したと思います。
RDSで使用する3つのプライベートサブネットを作成しました。
サブネット6リージョン1c
サブネットグループを変更することはできません。次に、サブネットグループを作成してから、同じACLおよびルート構成でそれぞれが異なるリージョン(1a、1b、1c)にある3つのサブネットを選択します。次に、その別の誤って構成されたサブネットグループを削除しました。 RDSダッシュボードに戻り、[Create RDS]をクリックして、必要なすべてのデータベースの詳細を選択し、目的のVPSを選択すると、選択したサブネットグループ名が表示されます。問題が解決しました。