Amazon RDS DBインスタンスのエンドポイントの命名規約を確認してみた
なんだか同じような名前だな
こんにちは、のんピ(@non____97)です。
皆さんはAmazon RDS DBインスタンスのエンドポイントの命名規約が気になったことはありますか? 私はあります。
なんだか無性に気になったので検証してみます。
ちなみに公式ドキュメントに答えは書いてありますが、見つけたのは検証後でした。懺悔。
識別子は、RDS によってインスタンスに割り当てられた DNS ホスト名の一部として使用されます。例えば、db1 を DB インスタンス識別子として指定した場合、RDS は、db1.123456789012.us-east-1.rds.amazonaws.com などのインスタンスの DNS エンドポイントを自動的に割り当て、ここでの 123456789012 はアカウントの特定の地域の固定識別子です。
検証してみた
考えられる要素
公式ドキュメントを確認していない私は、取り敢えず以下の要素がエンドポイントに影響を与えそうだと妄想しました。
- DB識別子
- DBエンジン
- リージョン
- アカウント
上から順番に値を変えてみて、エンドポイントの規則性を確認してみます。
DB識別子を変更した場合
まず、DB識別子を変更した場合の検証をしてみます。
検証内で比較するときに使用する基準となるDBは以下の値で準備しました。
- DB識別子 : database-1
- DBエンジン : MySQL互換のAurora (8.0.mysql_aurora.3.01.1)
- リージョン : us-east-1
- アカウント : アカウントA
作成されたDBのエンドポイントは以下のようになりました。
- クラスターのエンドポイント
- ライターエンドポイント :
database-1.cluster-cicjym7lykmq.us-east-1.rds.amazonaws.com
- リーダーエンドポイント :
database-1.cluster-ro-cicjym7lykmq.us-east-1.rds.amazonaws.com
- ライターエンドポイント :
- インスタンスのエンドポイント
database-1-instance-1.cicjym7lykmq.us-east-1.rds.amazonaws.com
エンドポイントにはDB識別子とリージョン名が含まれていることが確認できます。
cicjym7lykmq
がランダム要素がありそうな文字列で興味をそそられます。
続いて、DB識別子を変更して新しくDBを作成しました。
- DB識別子 : database-2
- DBエンジン : MySQL互換のAurora (8.0.mysql_aurora.3.01.1)
- リージョン : us-east-1
- アカウント : アカウントA
作成されたDBのエンドポイントは以下のようになりました。
- クラスターのエンドポイント
- ライターエンドポイント :
database-2.cluster-cicjym7lykmq.us-east-1.rds.amazonaws.com
- リーダーエンドポイント :
database-2.cluster-ro-cicjym7lykmq.us-east-1.rds.amazonaws.com
- ライターエンドポイント :
- インスタンスのエンドポイント
database-2-instance-1.cicjym7lykmq.us-east-1.rds.amazonaws.com
エンドポイントのDB識別子の箇所は変化ありましたが、リージョン名の前にある文字列cicjym7lykmq
は変化ありませんでした。
DBエンジンを変更した場合
続いて、DBエンジンを変更した場合を検証してみます。
DBエンジンを変更して新しくDBを作成しました。
- DB識別子 : database-1-instance-1
- DBエンジン : PostgreSQL 14.2
- リージョン : us-east-1
- アカウント : アカウントA
基準となるDBのクラスター(database-1)内に存在するインスタンスと同じDB識別子を指定しています。
作成されたDBのエンドポイントは以下のようになりました。
- インスタンスのエンドポイント
database-1-instance-1.cicjym7lykmq.us-east-1.rds.amazonaws.com
こちらもエンドポイントのリージョン名の前にある文字列cicjym7lykmq
は変化ありませんでした。
リージョンを変更した場合
続いて、リージョンを変更して新しくDBを作成しました。
- DB識別子 : database-1
- DBエンジン : MySQL互換のAurora (8.0.mysql_aurora.3.01.1)
- リージョン : ap-northeast-1
- アカウント : アカウントA
作成されたDBのエンドポイントは以下のようになりました。
- クラスターのエンドポイント
- ライターエンドポイント :
database-1.cluster-cukqrmgu6hz5.ap-northeast-1.rds.amazonaws.com
- リーダーエンドポイント :
database-1.cluster-ro-cukqrmgu6hz5.ap-northeast-1.rds.amazonaws.com
- ライターエンドポイント :
- インスタンスのエンドポイント
database-1-instance-1.cukqrmgu6hz5.ap-northeast-1.rds.amazonaws.com
エンドポイントのリージョン名はもちろん、リージョン名の前にある文字列cicjym7lykmq
がcukqrmgu6hz5
に変わりました。
リージョン名はこちらの文字列の生成に影響を与えるようですね。
アカウントを変更した場合
最後に、アカウントを変更して新しくDBを作成しました。
- DB識別子 : database-1-instance-1
- DBエンジン : PostgreSQL 14.2
- リージョン : us-east-1
- アカウント : アカウントB
DBエンジンも変えちゃっていますが、DBエンジンはエンドポイントに影響を与えないことを確認しているのでセーフです。
作成されたDBのエンドポイントは以下のようになりました。
- インスタンスのエンドポイント
database-1-instance-1.c5ybvd1cujre.us-east-1.rds.amazonaws.com
エンドポイントのリージョン名の前にある文字列cicjym7lykmq
がc5ybvd1cujre
に変わりました。
アカウントもこちらの文字列の生成に影響を与えるようですね。
公式ドキュメントをまずは確認しよう
Amazon RDS DBインスタンスのエンドポイントの命名規約を確認してみました。
皆さんは悩んだときには、まず公式ドキュメントを確認しましょう。そこに知りたいことが明記されていれば大幅に時間を節約できます。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!