Amazon RDS DBインスタンスのエンドポイントの命名規約を確認してみた

公式ドキュメント内に明記されているのに検証してしまった人の記事です
2022.04.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

なんだか同じような名前だな

こんにちは、のんピ(@non____97)です。

皆さんはAmazon RDS DBインスタンスのエンドポイントの命名規約が気になったことはありますか? 私はあります。

なんだか無性に気になったので検証してみます。

ちなみに公式ドキュメントに答えは書いてありますが、見つけたのは検証後でした。懺悔。

識別子は、RDS によってインスタンスに割り当てられた DNS ホスト名の一部として使用されます。例えば、db1 を DB インスタンス識別子として指定した場合、RDS は、db1.123456789012.us-east-1.rds.amazonaws.com などのインスタンスの DNS エンドポイントを自動的に割り当て、ここでの 123456789012 はアカウントの特定の地域の固定識別子です。

Amazon RDS DB インスタンス - Amazon Relational Database Service

検証してみた

考えられる要素

公式ドキュメントを確認していない私は、取り敢えず以下の要素がエンドポイントに影響を与えそうだと妄想しました。

  • 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

エンドポイントのリージョン名はもちろん、リージョン名の前にある文字列cicjym7lykmqcukqrmgu6hz5に変わりました。

リージョン名はこちらの文字列の生成に影響を与えるようですね。

アカウントを変更した場合

最後に、アカウントを変更して新しく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

エンドポイントのリージョン名の前にある文字列cicjym7lykmqc5ybvd1cujreに変わりました。

アカウントもこちらの文字列の生成に影響を与えるようですね。

公式ドキュメントをまずは確認しよう

Amazon RDS DBインスタンスのエンドポイントの命名規約を確認してみました。

皆さんは悩んだときには、まず公式ドキュメントを確認しましょう。そこに知りたいことが明記されていれば大幅に時間を節約できます。

この記事が誰かの助けになれば幸いです。

以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!