Amazon Aurora イベントでトリガーするルールの作成
Amazon EventBridge を使用すると、AWS のサービスを自動化して、アプリケーションの可用性の問題やリソースの変更などのシステムイベントに対応できます。
チュートリアル: Amazon EventBridge を使用して DB インスタンスの状態変化をログに記録する
このチュートリアルでは、 インスタンスの状態変化をログに記録する AWS Lambda 関数を作成します。次に、既存の RDS DB インスタンスの状態変化があったときに関数を実行するルールを作成します。このチュートリアルでは、一時的にシャットダウンできる小規模なテストインスタンスが実行されていることを前提としています。
重要
実行中の本番 DB インスタンスに対して、このチュートリアルを実行しないでください。
ステップ 1: AWS Lambda 関数を作成する
状態変更イベントのログを記録する Lambda 関数を作成します。ルールを作成するときに、この関数を指定します。
Lambda 関数を作成するには
AWS Lambda コンソールを https://console.aws.amazon.com/lambda/
で開きます。 -
Lambda を初めて使用する場合は、ウェルカムページを参照してください。[今すぐ始める] を選択します。それ以外の場合は、[関数の作成] を選択します。
-
[Author from scratch] を選択します。
-
[関数の作成] ページで、次の操作を実行します。
-
Lambda 関数の名前と説明を入力します。例えば、関数名を
RDSInstanceStateChange
とします。 -
[Runtime] (ランタイム) では、[Node.js 16x] を選択します。
-
[Architecture] (アーキテクチャ) では、[x86_64] を選択します。
-
[Execution role] (実行ロール) では、次のいずれかを実行します。
-
[基本的な Lambda アクセス権限で新しいロールを作成] を選択します。
-
[Existing role] (既存のロール) では、[Use an existing role] (既存のロールを使用する) を選択します。使用するロールを選択します。
-
-
[Create function] (関数の作成) を選択します。
-
-
[RDSInstanceStateChange] ページで、次の操作を行います。
-
[コードソース] で、[index.js] を選択します。
-
で、[index.js] ウィンドウで、既存のコードを削除します。
-
次のコードを入力します。
console.log('Loading function'); exports.handler = async (event, context) => { console.log('Received event:', JSON.stringify(event)); };
-
[デプロイ] を選択します。
-
ステップ 2: ルールを作成する
Amazon RDS インスタンスを起動するたびに Lambda 関数を実行するルールを作成します。
EventBridge ルールを作成するには
Amazon EventBridge コンソール (https://console.aws.amazon.com/events/
) を開きます。 -
ナビゲーションペインで Rules] (ルール) を選択します。
-
ルールの作成 を選択します。
-
ルールの名前と説明を入力します。例えば、「
RDSInstanceStateChangeRule
」と入力します。 -
[Rule with an event pattern] (イベントパターンを持つルール) を選択してから、[Next] (次へ) を選択します。
-
[Event source] (イベントソース) で、[AWS events or EventBridge partner events] ( イベントまたは EventBridge パートナーイベント) を選択します。
-
下にスクロールして、[Event pattern] (イベントパターン) セクションを展開します。
-
イベントソース で AWS のサービス を選択します。
-
[AWS service] (AWS サービス) では [Relational Database Service (RDS)] (リレーショナルデータベースサービス (RDS)) を選択します。
-
[イベントタイプ] で、[RDS DB インスタンスイベント] を選択します。
-
デフォルトのイベントパターンのままにします。次いで、[次へ] を選択します。
-
ターゲットタイプ] では、AWSサービス] を選択します。
-
[Select a target] (ターゲットを選択) では、[Lambda function] (Lambda 関数) を選択します。
-
[Function] (関数) では、作成した Lambda 関数を選択します。次いで、[次へ] を選択します。
-
[Configure Tags] (タグの設定) で、[Next] (次へ) を選択します。
-
ルール内の手順を確認します。次に、[Create rule] (ルールの作成) を選択します。
ステップ 3: ルールをテストする
ルールをテストするには、RDS DB インスタンスをシャットダウンします。インスタンスのシャットダウンの数分後に、Lambda 関数が呼び出されたことが確認できます。
DB インスタンスを停止してルールをテストするには
Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
RDS DB インスタンスを停止します。
Amazon EventBridge コンソール (https://console.aws.amazon.com/events/
) を開きます。 -
ナビゲーションペインで、[ルール] を選択し、作成したルールの名前を選択します。
-
[ルールの詳細] で、[モニタリング] を選択します。
Amazon CloudWatch コンソールにリダイレクトされます。リダイレクトされない場合は、[CloudWatch でメトリクスを表示] をクリックします。
-
[すべてのメトリクス] で、作成したルールの名前を選択します。
グラフには、ルールが呼び出されたことが示されます。
-
ナビゲーションペインで、[Log groups] (ロググループ) を選択します。
-
Lambda 関数 (/aws/lambda/
function-name
) のロググループの名前を選択します。 -
起動したインスタンスの関数によって提供されるデータを表示するログのストリーミング名を選択します。次のような受信イベントが表示されます。
{ "version": "0", "id": "12a345b6-78c9-01d2-34e5-123f4ghi5j6k", "detail-type": "RDS DB Instance Event", "source": "aws.rds", "account": "111111111111", "time": "2021-03-19T19:34:09Z", "region": "us-east-1", "resources": [ "arn:aws:rds:us-east-1:111111111111:db:testdb" ], "detail": { "EventCategories": [ "notification" ], "SourceType": "DB_INSTANCE", "SourceArn": "arn:aws:rds:us-east-1:111111111111:db:testdb", "Date": "2021-03-19T19:34:09.293Z", "Message": "DB instance stopped", "SourceIdentifier": "testdb", "EventID": "RDS-EVENT-0087" } }
JSON 形式の RDS イベントの例については、「Aurora のイベントの概要」を参照してください。
-
(オプション) 終了したら、Amazon RDS コンソールを開き、停止したインスタンスをスタートできます。