AWS (Amazon Web Services) RDS (Relational Database Service) で Amazon Aurora を起動するとエラーになる

AWS (Amazon Web Services) RDS (Relational Database Service) で Amazon Aurora を起動するとエラーになる

こんにちは。

以前のRDS関連の記事で、RDSインスタンスを MySQLエンジンで起動し、EC2から接続しました。

記事中にVPCにサブネットを2つ作成して→DBサブネットグループを作成したVPCサブネット2つを指定して作成する、という手順がありますが、これと同じ状態でRDSのエンジンにAmazon Auroraを指定すると、エラーになることが分かりました。

error when starting amazon aurora 1

エラーの内容は以下のとおりです。

Your subnet group doesn’t have enough availability zones for a storage cluster. You must have at least two availability zones to map to a storage cluster. (Service: AmazonRDS; Status Code: 400; Error Code: InvalidVPCNetworkStateFault; Request ID: 16a30138-b71f-11e7-af24-45dd75bc6c86)

なぜだ・・・なぜだ・・・と、数日はまっていたのですがスタッフの助けもあり解決しました。

原因は、Amazon Auroraにはアベイラビリティーゾーンが3つ必要ということでした。

早速、VPCサブネットをもう1つ追加し、DBサブネットグループを再作成しました。

error when starting amazon aurora 2

error when starting amazon aurora 3

この状態でAuroraを指定すると無事作成することができました。

AWSの技術サポートは有料のため、無課金で進めるにはこういったハードルは自力で解決する必要があります。

ただ、RDSの構築時に自動でサブネットグループを作成した場合はアベイラビリティグループも自動的に3つ登録されるようになっているので、このような問題は発生しにくいと思います。

解決に至った中で確認した、Amazonのサポート記事を再度確認するとやはり3つ必要ということを確認できました。

以下に記事引用で紹介します。

こちらの記事冒頭には、

Amazon Aurora DB クラスターは MySQL と、3 つのアベイラビリティーゾーンにコピーされたデータを単一の仮想ボリュームとして表現するクラスターボリュームと互換性があるインスタンスで構成されます。DB クラスターには、プライマリインスタンスと Aurora レプリカの 2 種類のインスタンスがあります。

とあります、また文中にも、

Aurora の DB クラスターのクラスターボリュームは常に 3 つのアベイラビリティーゾーンにまたがっていることに注意してください。

とあり、3つ必要だということが分かります。

こちらの記事では、実際にDBサブネットグループを作成する画面キャプチャが掲載されていて、3つのアベイラビリティーゾーンが指定されて作成されていることが確認できます。

ちなみに料金的には3倍や6倍になることはないようです。

Q: Amazon Aurora はデータベースの各単位を 3 つのアベイラビリティーゾーンにかけて 6 個レプリケーションするということですが、実際のストレージ料金は、料金表ページに書かれている料金の 3 倍または 6 倍になるということですか? いいえ。Amazon Aurora のレプリケーションは料金に含まれています。料金はデータベースがデータベースレイヤーで消費したストレージに応じて発生します。Amazon Aurora の仮想化ストレージレイヤーで消費したストレージではありません。

それでは次回の記事でお会いしましょう。

norikazum