there are no subnets with available IP addresses in the specified Availability Zone ap-northeast-1dの対処法【AWSサポートからの回答あり】【AWS】

RDSアイキャッチ画面

DB作成時に「EC2コンピューティングリソースに接続」を選ぶと下記のエラーが表示されたため、こちらの対処法を紹介します。

DBサブネットグループにdは指定していないし、そもそもDBサブネットグループはIP枯渇していないしで、わからなかったので共有します。

・DB作成時に「EC2コンピューティングリソースに接続」を押すとエラーが出る

原因

どうやら接続設定の「EC2コンピューティングリソースに接続」でDBのサブネットグループにないAzのEC2を指定してしまうとダメなようです。

今回の場合、DBのサブネットグループにAZ-aとAZ-cのみを指定しており、EC2がAZ-dで作成していました。

AWSサポートからの回答

今回調査でAWSサポートを利用しましたので、そちらの回答も紹介します。

はじめに、お客様にてご確認いただいております「EC2コンピューティングリソースに接続」についてご説明いたします。

ドキュメントでご案内しているとおり、Amazon RDS には DB インスタンスの作成時のオプションとして、既存の EC2 インスタンスとの自動ネットワーク設定が提供されております[1]。

現状の動作として、このオプションを使用しシングル AZ で DB インスタンスを作成する場合、DB インスタンスは接続先の EC2 インスタンスと同じアベイラビリティゾーンに作成されるようになっております[2]。

そのため、使用する DB サブネットグループに EC2 インスタンスの所属するアベイラビリティゾーンが存在しない場合、DB インスタンスの作成に失敗します。

たとえば、EC2 インスタンスが ap-northeast-1d に存在し、かつ ap-northeast-1a と ap-northeast-1c の DB サブネットグループを指定しシングル AZで作成を行ったとします。

DB インスタンスは ap-northeast-1d に作成されようとしますが、DB サブネットグループに ap-northeast-1d が存在しないため、エラーが発生します。

この問題には、DB サブネットグループに ap-northeast-1d に所属するサブネットを追加することで対応が可能です。

[1] EC2 インスタンスと DB インスタンスを自動的に接続する – Amazon Relational Database Service – https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/ec2-rds-connect.html 
[2] Amazon RDS DB インスタンスの作成 – Amazon Relational Database Service – https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/USER_CreateDBInstance.html#USER_CreateDBInstance.Prerequisites.VPC.Automatic 

「EC2コンピューティングリソースに接続」を選び、シングル構成の場合EC2と同じAZに作成されるんですね。

あまり使わない設定ですが、参考になれば幸いです。