Amazon Aurora
Aurora のユーザーガイド (API バージョン 2014-10-31)

Amazon Aurora 接続管理

通常、Amazon Aurora は単一の DB インスタンスではなく、DB インスタンスのクラスターを必要とします。各接続は特定の DB インスタンスで処理されます。Aurora クラスターに接続すると、指定したホスト名とポートがエンドポイントと呼ばれる中間ハンドラーをポイントします。Aurora は、エンドポイント機構を使用して、これらの接続を抽象化します。したがって、一部の DB インスタンスが使用できないときに、すべてのホスト名をハードコードしたり、接続のロードバランシングやルート再設定を行うために独自のロジックを記述したりする必要はありません。

Aurora の特定のタスクでは、インスタンスやインスタンスグループごとに異なるロールを実行します。たとえば、プライマリインスタンスはすべてのデータ定義言語 (DDL) とデータ操作言語 (DML) のステートメントを処理します。最大 15 の Aurora レプリカで読み取り専用のクエリトラフィックを処理します。

エンドポイントを使用すると、ユースケースに基づいて各接続を対応するインスタンスまたはインスタンスグループにマッピングできます。たとえば、DDL ステートメントを実行するには、プライマリインスタンスであるいずれのインスタンスにも接続できます。クエリを実行するには、読み取りエンドポイントに接続できます。Aurora はすべての Aurora レプリカ間で自動的にロードバランシングを実行します。容量や設定が異なる DB インスタンスで構成されるクラスターの場合は、DB インスタンスのサブセット別に関連付けたカスタムエンドポイントに接続できます。診断またはチューニングの場合は、特定のインスタンスエンドポイントに接続して、特定の DB インスタンスに関する詳細を調査できます。

Aurora エンドポイントのタイプ

エンドポイントは、ホストアドレスとポートを含む Aurora 固有の URL として表されます。Aurora DB クラスターでは、以下のタイプのエンドポイントを使用できます。

クラスターエンドポイント

Aurora DB クラスターの現在のプライマリ DB インスタンスに接続する、この DB クラスターのクラスターエンドポイント。このエンドポイントは、DDL ステートメントなどの書き込みオペレーションを実行できる唯一のエンドポイントです。このため、最初にクラスターを設定する場合や、クラスターに含まれている DB インスタンスが 1 つのみである場合は、クラスターエンドポイントに接続します。

Aurora DB クラスターごとに 1 つのクラスターエンドポイントと 1 つのプライマリ DB インスタンスがあります。

クラスターエンドポイントは、DB クラスターに対するすべての書き込みオペレーション (挿入、更新、削除、DDL の変更など) で使用します。クラスターエンドポイントは、クエリなどの読み取りオペレーションでも使用できます。

クラスターエンドポイントは、DB クラスターへの読み取り/書き込み接続のフェイルオーバーサポートを提供します。DB クラスターの現在のプライマリ DB インスタンスが失敗した場合、Aurora は新しいプライマリ DB インスタンスに自動的にフェイルオーバーします。フェイルオーバー中、DB クラスターは、新しいプライマリ DB インスタンスからクラスターエンドポイントへの接続リクエストに継続して対応し、サービスの中断は最小限に抑えられます。

次の例では、Aurora MySQL DB クラスターのエンドポイントを示します。

mydbcluster.cluster-123456789012.us-east-1.rds.amazonaws.com:3306

読み取りエンドポイント

Aurora DB クラスターの読み取りエンドポイントは、この DB クラスターの使用可能な Aurora レプリカのいずれかに接続します。Aurora DB クラスターごとに 1 つの読み取りエンドポイントがあります。複数の Aurora レプリカがある場合、読み取りエンドポイントは各接続リクエストを Aurora レプリカのいずれかにルーティングします。

読み取りエンドポイントは、DB クラスターへの読み取り専用接続のロードバランシングサポートを提供します。読み取りエンドポイントは、クエリなどの読み取りオペレーションで使用します。読み取りエンドポイントを書き込みオペレーションで使用することはできません。

DB クラスターは複数の使用可能な Aurora レプリカをまたぐ読み取りエンドポイントに接続リクエストを配布します。DB クラスターにプライマリ DB インスタンスのみが含まれている場合、読み取りエンドポイントはプライマリ DB インスタンスからの接続リクエストに対応します。この DB クラスターに 1 つ以上の Aurora レプリカが作成されている場合は、読み取りエンドポイントへの以降の接続は、レプリカ間で負荷分散されます。

次の例では、Aurora MySQL DB クラスターの読み取りエンドポイントを示します。

mydbcluster.cluster-ro-123456789012.us-east-1.rds.amazonaws.com:3306

カスタムエンドポイント

Aurora クラスターのカスタムエンドポイントは、選択した DB インスタンスのセットを表します。カスタムエンドポイントに接続すると、Aurora は負荷分散を行い、グループ内のいずれかのインスタンスを選択して接続を処理します。ユーザーは、このエンドポイントで参照するインスタンスを定義し、エンドポイントの用途を決めます。

Aurora DB クラスターには、ユーザーが作成するまで、カスタムエンドポイントは存在しません。Aurora のプロビジョニングされたクラスターごとに最大 5 つのカスタムエンドポイントを作成できます。Aurora サーバーレスクラスターでは、カスタムエンドポイントを使用できません。

カスタムエンドポイントでは、DB インスタンスの読み取り専用機能や読み取り/書き込み機能とは異なる基準に従ってデータベース接続を負荷分散できます。たとえば、特定の AWS インスタンスクラスや特定の DB パラメータグループを使用するインスタンスに接続するカスタムエンドポイントを定義できます。次に、このカスタムエンドポイントを特定のユーザーグループに知らせることができます。たとえば、社内ユーザーをレポート生成やアドホック (1 回だけの) クエリ実行用の低容量インスタンスに振り向けたり、本番稼働用トラフィックを高容量インスタンスに振り向けたりすることができます。

カスタムエンドポイントが関連付けられているいずれの DB インスタンスも接続先となるため、グループ内のすべての DB インスタンス間で同様の特性を共有することをお勧めします。これにより、このエンドポイントに接続するすべてのユーザー間で、パフォーマンス、メモリ容量などが一貫したものになります。

この機能は、クラスター内のすべての Aurora レプリカを同一に保つことが現実的ではない特種なワークロードを扱う上級ユーザー向けです。カスタムエンドポイントを使用すると、各接続に使用される DB インスタンスの容量を予測できます。カスタムエンドポイントを使用する場合は、通常、そのクラスターの読み取りエンドポイントは使用しません。

次の例は、Aurora MySQL DB クラスター内の DB インスタンスのカスタムエンドポイントを示しています。

myendpoint.cluster-custom-123456789012.us-east-1.rds.amazonaws.com:3306

インスタンスエンドポイント

インスタンスエンドポイントは、Aurora クラスター内の特定の DB インスタンスに接続します。DB クラスターの各 DB インスタンスには、インスタンスタイプにかかわらず、独自のインスタンスエンドポイントがあります。したがって、DB クラスター内の現在のプライマリ DB インスタンスに 1 つのインスタンスエンドポイントがあり、DB クラスター内の Aurora レプリカごとに 1 つのインスタンスエンドポイントがあります。

インスタンスエンドポイントは、クラスターエンドポイントや読み取りエンドポイントの使用が適切でないシナリオ向けに、DB クラスターへの接続の直接制御を提供します。たとえば、ワークロードタイプに基づき、さらにきめ細かいロードバランシングがアプリケーションに必要になる場合があります。この場合、DB クラスター内の別の Aurora レプリカに接続するように複数のクライアントを設定して、読み取りワークロードを分散させることができます。Aurora PostgreSQL のフェイルオーバー後に接続速度を向上させるインスタンスエンドポイントを使用する例については、「Amazon Aurora PostgreSQL を使用した高速フェイルオーバー」を参照してください。Aurora MySQL のフェイルオーバー後に接続速度を向上させるインスタンスエンドポイントを使用する例については、「MariaDB Connector/J failover support – case Amazon Aurora」を参照してください。

次の例では、Aurora MySQL DB クラスターの DB インスタンスのインスタンスエンドポイントを示します。

mydbinstance.123456789012.us-east-1.rds.amazonaws.com:3306

Aurora クラスターのエンドポイントの表示

AWS マネジメントコンソール では、クラスターエンドポイント、読み取りエンドポイント、およびカスタムエンドポイントが、各クラスターの詳細ページに表示されます。インスタンスエンドポイントは、各インスタンスの詳細ページに表示されます。接続する場合、この詳細ページに表示されているエンドポイント名の後にコロン (:) および該当するポート番号を付加する必要があります。

AWS CLI では、エンドポイントが describe-db-clusters コマンドの出力に表示されます。

Amazon RDS API では、DescribeDbClusterEndpoints 関数を呼び出してエンドポイントを取得します。

クラスターエンドポイントの使用

Aurora クラスターごとに組み込まれている単一のクラスターエンドポイントの名前と他の属性は Aurora で管理されるため、この種のエンドポイントをユーザーが作成、削除、または変更することはできません。

クラスターエンドポイントは、クラスターの管理、抽出/変換/ロード (ETL) オペレーションの実行、またはアプリケーションの開発やテストに使用します。クラスターエンドポイントはクラスターのプライマリインスタンスに接続します。プライマリインスタンスは、テーブルとインデックスを作成し、INSERT ステートメントや他の DDL/DML オペレーションを実行できる唯一の DB インスタンスです。

Aurora クラスターごとに組み込まれている単一のクラスターエンドポイントの名前や他の属性は Aurora で管理されます。ユーザーが、この種のエンドポイントを作成、削除、または変更することはできません。

フェイルオーバー機構によって別の DB インスタンスがクラスターの読み取り/書き込みのプライマリインスタンスに昇格されると、クラスターエンドポイントがポイントする物理 IP アドレスは変わります。何らかの形式の接続プールや他の多重化を使用している場合は、キャッシュされた DNS 情報の有効時間をフラッシュまたは削減する必要があります。これにより、フェイルオーバー後に使用不可または読み取り専用になった DB インスタンスに読み取り/書き込み接続を試行できないようにします。

読み取りエンドポイントの使用

読み取りエンドポイントは、Aurora クラスターの読み取り専用接続に使用します。このエンドポイントでは、ロードバランシング機構を使用して、クラスターによるクエリが集中的に行われるワークロードの処理を促進します。読み取りエンドポイントは、クラスターに対してレポートや他の読み取り専用のオペレーションを実行するアプリケーションに指定します。

読み取りエンドポイントは Aurora DB クラスターにある利用可能な Aurora レプリカへの接続のみを負荷分散します。個別のクエリは負荷分散しません。各クエリを負荷分散して DB クラスターの読み取りワークロードを配分する場合は、クエリごとに読み取りエンドポイントへの新しい接続を開きます。

Aurora クラスターごとに組み込まれている単一の読み取りエンドポイントの名前や他の属性は Aurora で管理されます。ユーザーが、この種のエンドポイントを作成、削除、または変更することはできません。

カスタムエンドポイントの使用

カスタムエンドポイントでは、容量や構成設定が異なる DB インスタンスがクラスターに含まれている場合に接続管理を簡素化します。

以前は、CNAMES 機構を使用して各自のドメインからドメインネームサービス (DNS) のエイリアスをセットアップして同様の結果を達成していました。カスタムエンドポイントを使用すると、クラスターの増大や縮小に伴って CNAME レコードを更新する必要がなくなります。カスタムエンドポイントでは、暗号化された Transport Layer Security/Secure Sockets Layer (TLS/SSL) 接続を使用することもできます。

異なる目的ごとに 1 つの DB インスタンスを使用し、そのインスタンスエンドポイントに接続する代わりに、複数の専用の DB インスタンスを持つことができます。この場合、グループごとに独自のカスタムエンドポイントを使用します。これにより、Aurora は、レポートの作成、本番稼働用クエリや内部クエリの処理など、タスク別のすべてのインスタンスをまたいでロードバランシングを実行できます。カスタムエンドポイントは、クラスター内の DB インスタンスのグループごとにロードバランシングと高可用性を提供します。グループ内のいずれかの DB インスタンスが使用不可になると、Aurora は以降のカスタムエンドポイント接続を、同じエンドポイントに関連付けられている他のいずれかの DB インスタンスに振り向けます。

カスタムエンドポイントのプロパティの指定

カスタムエンドポイント名の最大長は 63 文字です。名前の形式は次のとおりです。

endpointName.cluster-custom-customerDnsIdentifier.dnsSuffix

カスタムエンドポイント名にはクラスター名が含まれないため、クラスターの名前変更に伴って、これらの名前を変更する必要はありません。同じカスタムエンドポイント名を同じリージョンの複数のクラスターで再利用することはできません。カスタムエンドポイント名は、リージョン別にユーザー ID が所有するすべてのクラスター間で一意の名前にします。

各カスタムエンドポイントの対応するタイプにより、このエンドポイントに関連付けることができる DB インスタンスが決まります。現在、タイプは READER または ANY のいずれかです。カスタムエンドポイントのタイプには、以下の考慮事項が適用されます。

  • 読み取り専用の Aurora レプリカである DB インスタンスのみが、READER カスタムエンドポイントの一部となることができます。READER タイプは、シングルマスターレプリケーションを使用するクラスターにのみ適用されます。これらのクラスターは、複数の読み取り専用 DB インスタンスを含むことができるためです。

  • 読み取り専用の Aurora レプリカと読み取り/書き込みのプライマリインスタンスの両方が ANY カスタムエンドポイントの一部となることができます。Aurora は、タイプが ANY のクラスターエンドポイントへの接続を、同等の確率を持つ任意の関連する DB インスタンスに振り向けます。接続先が読み取り専用の Aurora レプリカのプライマリインスタンスであることを事前に確認することはできないため、この種のエンドポイントは読み取り専用接続にのみ使用します。ANY タイプは、任意のレプリケーショントポロジを使用するクラスターに適用されます。

  • 作成しようとしているカスタムエンドポイントのタイプがクラスターのレプリケーション設定に適切なものではない場合、Aurora はエラーを返します。

カスタムエンドポイントのメンバーシップルール

DB インスタンスをカスタムエンドポイントに追加したり、カスタムエンドポイントから削除したりすると、この DB インスタンスへの既存の接続はアクティブのまま残ります。

カスタムエンドポイントに含めたり、カスタムエンドポイントから除外したりする DB インスタンスのリストを定義できます。これらのリストは、それぞれ静的リストおよび除外リストと呼ばれます。包含/除外機構を使用して、さらに DB インスタンスのグループを細分化したり、カスタムエンドポイントのセットがクラスターのすべての DB インスタンスをカバーしていることを確認したりできます。各カスタムエンドポイントには、これらのリストタイプの 1 つのみを含めることができます。

AWS マネジメントコンソール では、選択したタイプが [Attach future instances added to this cluster (今後追加されたインスタンスをこのクラスターにアタッチ)] チェックボックスに反映されます。このチェックボックスをオフのままにすると、カスタムエンドポイントはダイアログで指定された DB インスタンスのみを含む静的リストを使用します。このチェックボックスをオンにすると、カスタムエンドポイントは除外リストを使用します。この場合、カスタムエンドポイントは、ダイアログで未選択のものを除いて、クラスター内のすべての DB インスタンス (今後追加するものも含む) を表します。AWS CLI および Amazon RDS API のパラメータはそれぞれの種類のリストを表します。AWS CLI または Amazon RDS API を使用する場合、リストに対して個別のメンバーを追加または削除することはできません。常に新しいリスト全体を指定します。

フェイルオーバーや昇格に伴って DB インスタンスのロールがプライマリインスタンスと Aurora レプリカの間で変わった場合、Aurora はこれらのリストに指定されている DB インスタンスを変更しません。たとえば、タイプが READER であるカスタムエンドポイントには、Aurora レプリカからプライマリインスタンスに昇格された DB インスタンスが含まれている場合があります。ただし、カスタムエンドポイントを通じて接続できる DB インスタンスは、カスタムエンドポイントのタイプ (READER または ANY) と互換性があるロールを持つものに限られます。

DB インスタンスは、複数のカスタムエンドポイントに関連付けることができます。たとえば、ユーザーが新しい DB インスタンスをクラスターに追加するか、Aurora が Autoscaling 機構を通じて DB インスタンスを自動的に追加するとします。このような場合、DB インスタンスは該当するすべてのカスタムエンドポイントに追加されます。どのエンドポイントに DB インスタンスが追加されるかは、カスタムエンドポイントのタイプである READER または ANY と、各エンドポイントに定義されている静的リストや除外リストに基づきます。たとえば、エンドポイントに DB インスタンスの静的リストが含まれている場合、新しく追加された Aurora レプリカはこのエンドポイントに追加されません。逆に、エンドポイントに除外リストが含まれている場合、新しく追加された Aurora レプリカは、この除外リストに名前が存在せず、ロールがカスタムエンドポイントのタイプと一致すれば、エンドポイントに追加されます。

Aurora レプリカは、使用不可になっても、カスタムエンドポイントに関連付けられたままになります。たとえば、異常、停止、再起動などに伴って、カスタムエンドポイントの一部として残ります。ただし、レプリカが再度使用可能になるまでは、これらのエンドポイントを通じてレプリカに接続することはできません。

カスタムエンドポイントの管理

新しく作成された Aurora クラスターにはカスタムエンドポイントがないため、これらのオブジェクトを自分で作成して管理する必要があります。これを行うには、AWS マネジメントコンソール、AWS CLI、または Amazon RDS API を使用します。

注記

スナップショットから復元した Aurora クラスターのカスタムエンドポイントも作成して管理する必要があります。カスタムエンドポイントはスナップショットに含まれていません。カスタムエンドポイントは、復元後に再度作成します。復元したクラスターが元のクラスターと同じリージョン内にある場合は、新しいエンドポイント名を選択します。

AWS マネジメントコンソール からカスタムエンドポイントを使用するには、Aurora クラスターの詳細ページに移動し、[Custom Endpoints (カスタムエンドポイント)] セクションのコントロールを使用します。

AWS CLI からカスタムエンドポイントを使用するには、以下のオペレーションを使用できます。

Amazon RDS API からカスタムエンドポイントを使用するには、以下の関数を使用できます。

カスタムエンドポイントの作成

AWS マネジメントコンソール

AWS マネジメントコンソール でカスタムエンドポイントを作成するには、クラスターの詳細ページに移動し、[Endpoints (エンドポイント)] セクションの [Create custom endpoint] アクションを選択します。カスタムエンドポイントの名前を選択します。名前はユーザー ID およびリージョンで一意なものを使用します。クラスターが拡張しても DB インスタンスのリストを変更せずに残す場合は、[Attach future instances added to this cluster (今後追加されるインスタンスをこのクラスターにアタッチ)] をオフのままにします。このチェックボックスをオンにすると、カスタムエンドポイントは、クラスターに新しく追加されたインスタンスを動的に追加します。

カスタムエンドポイントタイプの ANY または READER を AWS マネジメントコンソール で選択することはできません。AWS マネジメントコンソール で作成するすべてのカスタムエンドポイントは ANY タイプになります。

AWS CLI

AWS CLI でカスタムエンドポイントを作成するには、create-db-cluster-endpoint コマンドを実行します。

次のコマンドは、特定のクラスターにアタッチされるカスタムエンドポイントを作成します。当初、エンドポイントはクラスター内のすべての Aurora レプリカインスタンスに関連付けられます。後続のコマンドで、エンドポイントをクラスター内の特定の DB インスタンスのセットに関連付けます。

Linux、OS X、Unix の場合:

aws rds create-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample \ --endpoint-type reader \ --db-cluster-identifier cluster_id aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample \ --static-members instance_name_1,instance_name_2

Windows の場合:

aws rds create-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample ^ --endpoint-type reader ^ --db-cluster-identifier cluster_id aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier custom-endpoint-doc-sample ^ --static-members instance_name_1,instance_name_2
RDS API

RDS API でカスタムエンドポイントを作成するには、CreateDBClusterEndpoint アクションを実行します。

カスタムエンドポイントの表示

AWS マネジメントコンソール

AWS マネジメントコンソール でカスタムエンドポイントを表示するには、クラスターの詳細ページに移動し、[Endpoints (エンドポイント)] セクションを参照します。このセクションには、カスタムエンドポイントに関する情報のみが表示されます。組み込みエンドポイントに関する詳細は、メインの [詳細] セクションに表示されます。特定のカスタムエンドポイントに関する詳細を表示するには、その名前を選択してエンドポイントの詳細ページを表示します。

次のスクリーンショットは、Aurora クラスターのカスタムエンドポイントのリストが当初は空であることを示しています。

クラスターのカスタムエンドポイントを作成すると、[Endpoints (エンドポイント)] セクションに表示されます。

クリックを繰り返して詳細ページまで移動すると、エンドポイントに現在関連付けられている DB インスタンスが表示されます。

クラスターに追加された新しい DB インスタンスがエンドポイントにも自動的に追加されるかどうかの詳細を表示するには、エンドポイントの [編集] ダイアログを表示します。

AWS CLI

AWS CLI でカスタムエンドポイントを表示するには、describe-db-cluster-endpoints コマンドを実行します。

次のコマンドは、特定のリージョンの特定のクラスターに関連付けられているカスタムエンドポイントを表示します。出力には、組み込みエンドポイントとカスタムエンドポイントの両方が含まれています。

Linux、OS X、Unix の場合:

aws rds describe-db-cluster-endpoints --region region_name \ --db-cluster-identifier cluster_id

Windows の場合:

aws rds describe-db-cluster-endpoints --region region_name ^ --db-cluster-identifier cluster_id

describe-db-cluster-endpoints コマンドの出力例は以下のとおりです。EndpointTypeWRITER または READER は、クラスターの組み込みの読み取り/書き込みエンドポイントと読み取り専用エンドポイントを示します。EndpointTypeCUSTOM は、ユーザーが作成し、関連する DB インスタンスを選択した、エンドポイントを示します。エンドポイントの 1 つに含まれている空ではない StaticMembers フィールドは、エンドポイントが DB インスタンスの厳密なセットに関連付けられることを示します。他のエンドポイントの空ではない ExcludedMembers フィールドは、ExcludedMembers にリストアップされているものを除いたすべての DB インスタンスにエンドポイントが関連付けられることを示します。この 2 番目の種類のカスタムエンドポイントは、クラスターに追加された新しいインスタンスを包含して増大します。

{ "DBClusterEndpoints": [ { "Endpoint": "custom-endpoint-demo.cluster-123456789012.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo", "EndpointType": "WRITER" }, { "Endpoint": "custom-endpoint-demo.cluster-ro-123456789012.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo", "EndpointType": "READER" }, { "CustomEndpointType": "ANY", "DBClusterEndpointIdentifier": "powers-of-2", "ExcludedMembers": [], "DBClusterIdentifier": "custom-endpoint-demo", "Status": "available", "EndpointType": "CUSTOM", "Endpoint": "powers-of-2.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "StaticMembers": [ "custom-endpoint-demo-04", "custom-endpoint-demo-08", "custom-endpoint-demo-01", "custom-endpoint-demo-02" ], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:powers-of-2" }, { "CustomEndpointType": "ANY", "DBClusterEndpointIdentifier": "eight-and-higher", "ExcludedMembers": [ "custom-endpoint-demo-04", "custom-endpoint-demo-02", "custom-endpoint-demo-07", "custom-endpoint-demo-05", "custom-endpoint-demo-03", "custom-endpoint-demo-06", "custom-endpoint-demo-01" ], "DBClusterIdentifier": "custom-endpoint-demo", "Status": "available", "EndpointType": "CUSTOM", "Endpoint": "eight-and-higher.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "StaticMembers": [], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHYQKFU6J6NV5FHU", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:eight-and-higher" } ] }
RDS API

RDS API でカスタムエンドポイントを表示するには、DescribeDBClusterEndpoints.html アクションを実行します。

カスタムエンドポイントの編集

カスタムエンドポイントのプロパティを編集して、エンドポイントに関連付けられている DB インスタンスを変更できます。静的リストと除外リストの間でエンドポイントを変更することもできます。これらのエンドポイントプロパティの詳細については、「カスタムエンドポイントのメンバーシップルール」を参照してください。

編集アクションによる変更の進行中は、カスタムエンドポイントへの接続やカスタムエンドポイントの使用はできません。エンドポイントのステータスが [使用可能] に戻り、再度接続できるようになるまでに数分かかることがあります。

AWS マネジメントコンソール

AWS マネジメントコンソール でカスタムエンドポイントを編集するには、クラスターの詳細ページでエンドポイントを選択するか、エンドポイントの詳細ページを表示して、[編集] アクションを選択します。

AWS CLI

AWS CLI でカスタムエンドポイントを編集するには、modify-db-cluster-endpoint コマンドを実行します。

以下のコマンドは、カスタムエンドポイントに適用される DB インスタンスのセットを変更し、必要に応じて静的リストまたは除外リストの動作間を切り替えます。--static-members パラメータと --excluded-members パラメータは、スペースで区切られた DB インスタンス識別子のリストを使用します。

Linux、OS X、Unix の場合:

aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint \ --static-members db-instance-id-1 db-instance-id-2 db-instance-id-3 \ --region region_name aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint \ --excluded-members db-instance-id-4 db-instance-id-5 \ --region region_name

Windows の場合:

aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint ^ --static-members db-instance-id-1 db-instance-id-2 db-instance-id-3 ^ --region region_name aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier my-custom-endpoint ^ --excluded-members db-instance-id-4 db-instance-id-5 ^ --region region_name
RDS API

RDS API でカスタムエンドポイントを編集するには、ModifyDBClusterEndpoint.html アクションを実行します。

カスタムエンドポイントの削除

AWS マネジメントコンソール

AWS マネジメントコンソール でカスタムエンドポイントを削除するには、クラスターの詳細ページに移動し、該当するカスタムエンドポイントを選択して、[削除] アクションを選択します。

AWS CLI

AWS CLI でカスタムエンドポイントを削除するには、delete-db-cluster-endpoint コマンドを実行します。

次のコマンドは、カスタムエンドポイントを削除します。関連付けられたクラスターを指定する必要はありませんが、リージョンを指定する必要があります。

Linux、OS X、Unix の場合:

aws rds delete-db-cluster-endpoint --db-cluster-endpoint-identifier custom-end-point-id \ --region region_name

Windows の場合:

aws rds delete-db-cluster-endpoint --db-cluster-endpoint-identifier custom-end-point-id ^ --region region_name
RDS API

RDS API でカスタムエンドポイントを削除するには、DeleteDBClusterEndpoint アクションを実行します。

カスタムエンドポイントのエンドツーエンド AWS CLI の例

次のチュートリアルでは、AWS CLI による Unix シェル構文の例を使用して、いくつかの "small" DB インスタンスと "big" DB インスタンスで構成されたクラスターを定義し、カスタムエンドポイントを作成して DB インスタンスの各セットに接続できることを示します。自分のシステムで同様のコマンドを実行するには、リージョン、サブネットグループ、VPC セキュリティグループなどのパラメータに独自の値を指定するために、Aurora クラスターと AWS CLI の基本的な使用法に精通している必要があります。

この例では、最初のセットアップステップである、Aurora クラスターの作成とクラスターへの DB インスタンスの追加を示します。これは異種クラスターです。つまり、すべての DB インスタンスが同じ容量を持っているわけではありません。ほとんどのインスタンスは AWS インスタンスクラス db.r4.4xlarge を使用しますが、最後の 2 つの DB インスタンスは db.r4.16xlarge を使用します。以下の各 create-db-instance コマンドでは、出力を画面に表示し、JSON のコピーをファイルに保存して後で検査できるようにします。

aws rds create-db-cluster --db-cluster-identifier custom-endpoint-demo --engine aurora \ --engine-version 5.6.10a --master-username $MASTER_USER --master-user-password $MASTER_PW \ --db-subnet-group-name $SUBNET_GROUP --vpc-security-group-ids $VPC_SECURITY_GROUP \ --region $REGION for i in 01 02 03 04 05 06 07 08 do aws rds create-db-instance --db-instance-identifier custom-endpoint-demo-${i} \ --engine aurora --db-cluster-identifier custom-endpoint-demo --db-instance-class db.r4.4xlarge \ --region $REGION \ | tee custom-endpoint-demo-${i}.json done for i in 09 10 do aws rds create-db-instance --db-instance-identifier custom-endpoint-demo-${i} \ --engine aurora --db-cluster-identifier custom-endpoint-demo --db-instance-class db.r4.16xlarge \ --region $REGION \ | tee custom-endpoint-demo-${i}.json done

より大きいインスタンスは特種なレポートクエリ用に予約されています。これらのインスタンスがプライマリインスタンスに昇格されないように、次の例では昇格階層を最低の優先度に変更します。

for i in 09 10 do aws rds modify-db-instance --db-instance-id custom-endpoint-demo-${i} \ --region $REGION --promotion-tier 15 done

2 つの "bigger" インスタンスを、リソースを最も集中的に使用するクエリ専用にするとします。この場合、読み取り専用のカスタムエンドポイントを作成し、メンバーの静的リストを追加して、エンドポイントがこれらの DB インスタンスにのみ接続するように設定できます。これらのインスタンスは、すでに最低の昇格階層にあるため、いずれのインスタンスもプライマリインスタンスに昇格される可能性はありません。いずれかがプライマリインスタンスに昇格されたとしても、タイプとして ANY ではなく READER を指定しているため、このエンドポイントを通じてインスタンスに到達することはできなくなります。次の例では、エンドポイントの作成コマンドと変更コマンドを示します。JSON 出力例は、カスタムエンドポイントの当初の状態と変更後の状態を示しています。

$ aws rds create-db-cluster-endpoint --region $REGION \ --db-cluster-identifier custom-endpoint-demo \ --db-cluster-endpoint-identifier big-instances --endpoint-type reader { "EndpointType": "CUSTOM", "Endpoint": "big-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "DBClusterEndpointIdentifier": "big-instances", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "ExcludedMembers": [], "CustomEndpointType": "READER", "Status": "creating", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances" } $ aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier big-instances \ --static-members custom-endpoint-demo-09 custom-endpoint-demo-10 --region $REGION { "EndpointType": "CUSTOM", "ExcludedMembers": [], "DBClusterEndpointIdentifier": "big-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "CustomEndpointType": "READER", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances", "StaticMembers": [ "custom-endpoint-demo-10", "custom-endpoint-demo-09" ], "Status": "modifying", "Endpoint": "big-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "DBClusterIdentifier": "custom-endpoint-demo" }

クラスターのデフォルトの READER エンドポイントは、"small" または "big" の DB インスタンスに接続できます。クラスターがビジー状態になると、クエリのパフォーマンスとスケーラビリティは予測不可能になります。DB インスタンスのセット間でワークロードを明確に分けるには、デフォルトの READER エンドポイントを無視して、他のすべての DB インスタンスに接続する 2 番目のカスタムエンドポイントを作成できます。次の例では、これを行うために、カスタムエンドポイントを作成して除外リストを追加します。後でクラスターに追加した他の DB インスタンスは、このエンドポイントに自動的に追加されます。ANY タイプでは、このエンドポイントに合計 8 個のインスタンス (プライマリインスタンスと 7 個の Aurora レプリカ) が関連付けられます。この例で READER タイプを使用したとすると、カスタムエンドポイントは 7 個のみの Aurora レプリカに関連付けられます。

$ aws rds create-db-cluster-endpoint --region $REGION --db-cluster-identifier custom-endpoint-demo \ --db-cluster-endpoint-identifier small-instances --endpoint-type any { "Status": "creating", "DBClusterEndpointIdentifier": "small-instances", "CustomEndpointType": "ANY", "EndpointType": "CUSTOM", "Endpoint": "small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "StaticMembers": [], "ExcludedMembers": [], "DBClusterIdentifier": "custom-endpoint-demo", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:small-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY" } $ aws rds modify-db-cluster-endpoint --db-cluster-endpoint-identifier small-instances \ --excluded-members custom-endpoint-demo-09 custom-endpoint-demo-10 --region $REGION { "DBClusterEndpointIdentifier": "small-instances", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:small-instances", "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY", "CustomEndpointType": "ANY", "Endpoint": "small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "EndpointType": "CUSTOM", "ExcludedMembers": [ "custom-endpoint-demo-09", "custom-endpoint-demo-10" ], "StaticMembers": [], "DBClusterIdentifier": "custom-endpoint-demo", "Status": "modifying" }

次の例では、このクラスターのエンドポイントの状態をチェックします。クラスターには、まだ元のクラスターエンドポイントがあります。EndPointTypeWRITER は、引き続き管理、ETL、その他の書き込みオペレーションに使用することにします。元の READER エンドポイントは、"small" または "big" DB インスタンスに振り向けられる可能性があるため、使用しないことにします。カスタムエンドポイントでは、この動作が予測可能になり、指定したエンドポイントに基づいて "small" または "big" DB インスタンスのいずれかが接続で確実に使用されます。

$ aws rds describe-db-cluster-endpoints --region $REGION { "DBClusterEndpoints": [ { "EndpointType": "WRITER", "Endpoint": "custom-endpoint-demo.cluster-123456789012.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo" }, { "EndpointType": "READER", "Endpoint": "custom-endpoint-demo.cluster-ro-123456789012.ca-central-1.rds.amazonaws.com", "Status": "available", "DBClusterIdentifier": "custom-endpoint-demo" }, { "Endpoint": "small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "CustomEndpointType": "ANY", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:small-instances", "ExcludedMembers": [ "custom-endpoint-demo-09", "custom-endpoint-demo-10" ], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-6RDDXQOC3AKKZT2PRD7ST37BMY", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [], "EndpointType": "CUSTOM", "DBClusterEndpointIdentifier": "small-instances", "Status": "modifying" }, { "Endpoint": "big-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com", "CustomEndpointType": "READER", "DBClusterEndpointArn": "arn:aws:rds:ca-central-1:111122223333:cluster-endpoint:big-instances", "ExcludedMembers": [], "DBClusterEndpointResourceIdentifier": "cluster-endpoint-W7PE3TLLFNSHXQKFU6J6NV5FHU", "DBClusterIdentifier": "custom-endpoint-demo", "StaticMembers": [ "custom-endpoint-demo-10", "custom-endpoint-demo-09" ], "EndpointType": "CUSTOM", "DBClusterEndpointIdentifier": "big-instances", "Status": "available" } ] }

最後の例では、カスタムエンドポイントへの以降のデータベース接続が Aurora クラスターのさまざまな DB インスタンスに接続されることを示します。small-instances エンドポイントは、db.r4.4xlarge DB インスタンス (このクラスターの下位数字のホスト) に常に接続します。

$ mysql -h small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com -u $MYUSER -p Enter password: ... mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-02 | +-------------------------+ $ mysql -h small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com -u $MYUSER -p Warning: Using a password on the command line interface can be insecure. Enter password: ... mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-07 | +-------------------------+ 1 row in set (0.00 sec) $ mysql -h small-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com -u $MYUSER -p Enter password: ... mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-01 | +-------------------------+

big-instances エンドポイントは、db.r4.16xlarge DB インスタンス (このクラスターの最上位数字のホスト 2 つ) に常に接続します。

$ mysql -h big-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com -u $MYUSER -p Enter password: ... Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-10 | +-------------------------+ $ mysql -h big-instances.cluster-custom-123456789012.ca-central-1.rds.amazonaws.com -u $MYUSER -p Enter password: ... mysql> select @@aurora_server_id; +-------------------------+ | @@aurora_server_id | +-------------------------+ | custom-endpoint-demo-09 | +-------------------------+

インスタンスエンドポイントの使用

日常的なオペレーションでインスタンスエンドポイントを主に使用するのは、Aurora クラスター内の特定のインスタンスに影響している容量やパフォーマンスの問題を診断する場合です。特定のインスタンスに接続しているときに、そのステータス変数、メトリクスなどを調査できます。これを行うことで、クラスターの他のインスタンスとは異なり、この特定のインスタンスだけに起きている現象を判断できます。

高度なユースケースでは、一部の DB インスタンスを他のインスタンスとは異なるように設定することもできます。この場合は、インスタンスエンドポイントを使用して他のインスタンスと比べて、より小さいインスタンス、より大きいインスタンス、または特性が異なるインスタンスに直接接続します。また、この特定の DB インスタンスがプライマリインスタンスに昇格される順位が最後になるように、フェイルオーバーの優先度を設定します。このような場合は、インスタンスエンドポイントではなく、カスタムエンドポイントを使用することをお勧めします。カスタムエンドポイントを使用すると、クラスターに追加する DB インスタンスが増えたときの接続の管理と高可用性の確保が容易になります。

Aurora クラスターの DB インスタンスごとに個別に組み込まれているインスタンスエンドポイントの名前や他の属性は Aurora で管理されます。ユーザーが、この種のエンドポイントを作成、削除、または変更することはできません。

Aurora エンドポイントでの高可用性の使用

高可用性が重要であるクラスターでは、特に問題がない限り、クラスターエンドポイントを読み取り/書き込み接続に使用し、読み取りエンドポイントを読み取り専用接続に使用します。これらの種類の接続では、DB インスタンスのフェイルオーバーが、インスタンスエンドポイントよりも効率的に管理されます。インスタンスエンドポイントは DB クラスターの特定の DB インスタンスに接続するため、この DB インスタンスが使用不能になった場合に別のエンドポイントを選択するロジックがアプリケーションに必要になります。

DB クラスターのプライマリ DB インスタンスが失敗した場合、Aurora は新しいプライマリ DB インスタンスに自動的にフェイルオーバーします。そのために、既存の Aurora レプリカが新しいプライマリ DB インスタンスに昇格されるか、新しいプライマリ DB インスタンスが作成されます。フェイルオーバーが発生した場合、クラスターエンドポイントを使用して新しく昇格させたプライマリインスタンスや新規作成したプライマリ DB インスタンスに接続するか、読み取りエンドポイントを使用して DB クラスター内のいずれかの Aurora レプリカに接続できます。フェイルオーバーの際に、Aurora レプリカが新しいプライマリ DB インスタンスに昇格されると、読み取りエンドポイントは接続を DB クラスターの新しいプライマリ DB インスタンスに短時間だけ振り向ける場合があります。

インスタンスエンドポイントへの接続を管理するように独自のアプリケーションロジックを設計する場合は、DB クラスター内の使用可能な DB インスタンスの結果セットを手動またはプログラムで検出できます。次に、フェイルオーバー後のインスタンスタイプを確認し、適切なインスタンスエンドポイントに接続できます。

フェイルオーバーについての詳細は、「Aurora DB クラスターの耐障害性」を参照してください。