type
status
date
slug
summary
tags
category
icon
password
理論
Amazon Aurora
以下は、Amazon Auroraで使用できるエンドポイントの種類とその詳細を示した表です:
エンドポイントの種類 | 用途 | 説明 |
クラスターエンドポイント | 書き込み操作用(プライマリインスタンス) | Auroraクラスター内のプライマリインスタンスに接続します。すべての書き込み操作(INSERT、UPDATEなど)はこのエンドポイントを通じて行います。 |
リーダーエンドポイント | 読み取り操作用(読み取りレプリカ) | Auroraクラスター内の読み取りレプリカに接続します。主にSELECTクエリなど、読み取り操作に使用されます。複数の読み取りレプリカに負荷分散を行います。 |
カスタムエンドポイント | 特定の使用ケースに合わせたエンドポイント | ユーザーが定義した特定のインスタンスに接続するエンドポイントです。複数のインスタンスを対象にする場合や、特定の用途に合わせて設定します。 |
インスタンスエンドポイント | 特定のインスタンスへの接続 | Auroraクラスター内の個別のインスタンスに接続します。通常、単一のインスタンス(書き込みインスタンスまたは読み取りインスタンス)に接続する際に使用します。 |
このように、Auroraにはそれぞれ異なる種類のエンドポイントがあり、用途に応じて適切なエンドポイントを選択することが重要です。

+




まとめ
クラスターエンドポイント
DBクラスターの現在のプライマリインスタンスに接続する。書き込みオペレーションを実行できる唯一のエンドポイント
リーダーエンドポイント
DBクラスターへの読み込み専用接続を負荷分散する。最大15個のレプリカを作成でき、レプリカから読み込む
カスタムエンドポイント
特定のDBインスタンスのグループに接続する。グループ内のいずれかのインスタンスを選択し接続処理を行う
インスタンスエンドポイント
クラスター内の特定のDBインスタンスに接続する。
参照元:
RDS Proxyとは
RDS Proxy は、Amazon Web Services (AWS) が提供する、データベース接続を効率的に管理するためのサービスです。主に以下の目的で使用されます:
- 接続のプール管理: Lambda や EC2 インスタンスなどからデータベースへの接続をプールし、効率的に再利用します。これにより、接続数の増加やオーバーヘッドを防ぎ、アプリケーションのパフォーマンスを向上させます。
- スケーラビリティ: 高トラフィック時でもデータベース接続を適切に管理し、接続数を制限することでデータベースの負荷を軽減します。
- 高可用性: 複数の RDS インスタンスや Aurora クラスターをサポートし、接続の可用性を向上させます。
簡単に言うと、RDS Proxy はデータベースへの接続を効率的に管理し、アプリケーションのパフォーマンスと可用性を向上させるためのサービスです。

実践

一問道場
質問 #48
ソリューションアーキテクトは、Amazon API Gateway のリージョナルエンドポイントと AWS Lambda 関数を使用するウェブアプリケーションを開発しました。ウェブアプリケーションの消費者はすべて、アプリケーションがデプロイされる AWS リージョンに近い場所にいます。Lambda 関数は、Amazon Aurora MySQL データベースをクエリするのみです。ソリューションアーキテクトは、データベースに 3 つの読み取りレプリカを設定しています。テスト中、アプリケーションはパフォーマンス要件を満たしていません。高負荷時に、アプリケーションは大量のデータベース接続を開きます。ソリューションアーキテクトは、アプリケーションのパフォーマンスを改善する必要があります。
どのアクションを取るべきですか?(2つ選んでください。)
A. Aurora データベースのクラスターエンドポイントを使用する
B. RDS Proxy を使用して、Aurora データベースのリーダーエンドポイントに接続プールを設定する
C. Lambda のプロビジョニング済み同時実行数機能を使用する
D. Lambda 関数内でデータベース接続を開くコードをイベントハンドラーの外に移動する
E. API Gateway エンドポイントをエッジ最適化エンドポイントに変更する
解説
この問題では、ウェブアプリケーションのパフォーマンス改善が求められており、アプリケーションが高負荷時に大量のデータベース接続を開いていることが問題となっています。パフォーマンス改善のために取るべきアクションを選ぶ必要があります。
各選択肢を分析します。
- A. Aurora データベースのクラスターエンドポイントを使用する
- Auroraのクラスターエンドポイントは、主にデータベースクラスター全体に対する接続を管理するために使用されます。これを使用することで、アプリケーションは読み取り専用ではなく書き込みが可能なプライマリインスタンスに接続することになりますが、パフォーマンス改善という観点では必ずしも効果的ではありません。この選択肢は問題を解決しません。
- B. RDS Proxy を使用して、Aurora データベースのリーダーエンドポイントに接続プールを設定する
- RDS Proxyは、データベース接続のプールを管理することで、Lambda関数からデータベースへの接続のオーバーヘッドを軽減し、接続の効率を向上させます。これにより、高負荷時に大量の接続が開かれる問題を解決できます。これは非常に効果的な解決策です。
- C. Lambda のプロビジョニング済み同時実行数機能を使用する
- Lambda関数のプロビジョニング済み同時実行数機能は、Lambda関数の同時実行数を事前に確保することができ、関数のスケーリングの問題を軽減します。しかし、これはデータベース接続の問題とは直接的に関係しません。接続の問題を解決するものではないため、パフォーマンスの改善には不適切です。
- D. Lambda 関数内でデータベース接続を開くコードをイベントハンドラーの外に移動する
- Lambda関数内でデータベース接続を開くコードをイベントハンドラーの外に移動することで、接続のオープン・クローズの回数を減らし、パフォーマンスを改善することができます。しかし、これは根本的な接続管理の問題を解決するものではないため、効果的な解決策としては限界があります。
- E. API Gateway エンドポイントをエッジ最適化エンドポイントに変更する
- API Gatewayのエッジ最適化エンドポイントは、消費者がAWSリージョンに近い場合に効果がありますが、これはアプリケーションのパフォーマンス向上には直接的な影響を与えません。データベース接続やLambdaのスケーリングに関する問題には関係ありません。
正解:
B. RDS Proxy を使用して、Aurora データベースのリーダーエンドポイントに接続プールを設定する
D. Lambda 関数内でデータベース接続を開くコードをイベントハンドラーの外に移動する
理由:
- Bは、データベース接続の効率を改善し、高負荷時に大量の接続を開く問題を解決します。
- Dは、データベース接続を効率的に管理するために役立ち、接続のオープン・クローズの回数を減らし、パフォーマンスを改善します。
Lambda 関数内でデータベース接続を開くコードをイベントハンドラーの外に移動する方法について、実際のコード例を説明します。
Lambda 関数内でデータベース接続を開くコードをイベントハンドラーの外に移動することで、Lambda 関数が複数回実行されても接続の再利用が可能になり、データベース接続のオーバーヘッドを減らすことができます。Lambda 関数が繰り返し呼ばれる場合、接続を再利用することが非常に重要です。
Lambda 関数でのデータベース接続を最適化する例
ここでは、Node.js の Lambda 関数を例に、データベース接続コードをどのようにイベントハンドラーの外に移動するかを示します。
1. 最適化前(接続をイベントハンドラー内で毎回開く)
このコードでは、Lambda 関数が毎回呼び出されるたびに、新しいデータベース接続を開いています。接続を開くたびにオーバーヘッドが発生し、高負荷時には問題になります。
2. 最適化後(接続をイベントハンドラーの外で再利用)
解説
- 接続を関数の外で作成:
Lambda 関数の外で
mysql.createConnection
を実行することで、Lambda が呼ばれるたびに新しい接続を開くことなく、以前の接続を再利用することができます。
- 接続の管理: Lambda 関数が最初に実行されるときに接続が開かれ、その後の実行では接続が再利用されます。Lambda のランタイムが保持する接続オブジェクトを再利用するため、接続オーバーヘッドが削減され、パフォーマンスが向上します。
- 接続を閉じない:
Lambda の
connection.end()
を呼び出さないことで、関数が再実行されるたびに新しい接続を開く必要がなくなります。Lambda 関数が実行されるたびに再利用されます。
注意点
- Lambda の実行環境はリサイクルされる場合があるため、永続的に接続が生き続けるわけではありません。Lambda の環境が再利用されない場合(例えば、インスタンスがシャットダウンされた場合)、再度接続を作成する必要があります。
- 高トラフィック環境では、RDS Proxy を使用して接続プールを管理することも有効です。これにより、接続プールの管理が効率化され、接続のオーバーヘッドがさらに削減されます。
このように、接続をLambda関数の外に移動することで、データベース接続の再利用が可能となり、パフォーマンスが向上します。
- 作者:みなみ
- 链接:https://tangly1024.com/資格勉強/169d7ae8-88e2-803c-81a7-df63e951d6a3
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章