Amazon RDS イベントでトリガーするルールの作成 - Amazon Relational Database Service

Amazon RDS イベントでトリガーするルールの作成

Amazon CloudWatch Events および Amazon EventBridge を使用すると、AWS のサービスを自動化して、アプリケーションの可用性の問題やリソースの変更など、システム関係のイベントに対応できます。

Amazon RDS イベントを CloudWatch Events に送信するルールの作成

簡単なルールを記述して、対象となる Amazon RDS イベントと、イベントがルールに一致した場合に自動的に実行するアクションを指定できます。イベントを JSON 形式で受け取る AWS Lambda 関数や Amazon SNS トピックなど、さまざまなターゲットの設定が可能です。例えば、DB インスタンスが作成または削除されるたびに CloudWatch Events または Amazon EventBridge にイベントを送信するように Amazon RDS を設定できます。詳細については、Amazon CloudWatch Events ユーザーガイド、および Amazon EventBridge ユーザーガイドを参照してください。

RDS イベントでトリガーするルールを作成するには:
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. ナビゲーションペインの [イベント] で、[ルール] を選択します。

  3. [ルールの作成] を選択します。

  4. [イベントソース] で、以下の操作を実行します。

    1. [Event Pattern] を選択します。

    2. [サービス名] に [リレーショナルデータベースサービス (RDS)] を選択します。

    3. [Event Type] (イベントタイプ) として、イベントをトリガーする Amazon RDS リソースのタイプを選択します。例えば、内の DB インスタンスがイベントをトリガーする場合は、[RDS DB Instance Event] (RDS DB インスタンスイベント) を選択します。

  5. [ターゲット] で [ターゲットの追加] を選択し、選択した種類のイベントが検出されたときに対応する AWS のサービスを選択します。

  6. このセクションの他のフィールドに、このターゲットタイプに固有の情報を入力します (必要な場合)。

  7. 多くのターゲットタイプで、CloudWatch Events はターゲットにイベントを送信するためのアクセス許可が必要です。これらの場合、CloudWatch Events は、イベントの実行に必要な IAM ロールを作成できます。

    • 自動的に IAM ロールを作成するには、[この特定のリソースに対して新しいロールを作成する] を選択します。

    • 以前に作成した IAM ロールを使用するには、[既存のルールの使用] を選択します。

  8. オプションで、このルールに別のターゲットを追加するには、ステップ 5~7 を繰り返します。

  9. [詳細の設定] を選択します。[Rule definition] で、ルールの名前と説明を入力します。

    ルール名はこのリージョン内で一意である必要があります。

  10. [ルールの作成] を選択します。

詳細については、Amazon CloudWatch ユーザーガイド の「イベントでトリガーする CloudWatchのイベントルールの作成」を参照してください。

チュートリアル: Amazon EventBridge を使用して DB インスタンスの状態変化をログに記録する

このチュートリアルでは、Amazon RDS インスタンスの状態変化をログに記録する AWS Lambda 関数を作成します。次に、既存の RDS DB インスタンスの状態変化があったときに関数を実行するルールを作成します。このチュートリアルでは、一時的にシャットダウンできる小規模なテストインスタンスが実行されていることを前提としています。

重要

実行中の本番 DB インスタンスに対して、このチュートリアルを実行しないでください。

ステップ 1: AWS Lambda 関数を作成する

状態変更イベントのログを記録する Lambda 関数を作成します。ルールを作成するときに、この関数を指定します。

Lambda 関数を作成するには
  1. AWS Lambda コンソールを (https://console.aws.amazon.com/lambda/) 開きます。

  2. Lambda を初めて使用する場合は、ウェルカムページを参照してください。[今すぐ始める] を選択します。それ以外の場合は、[関数の作成] を選択します。

  3. [Author from scratch] を選択します。

  4. [関数の作成] ページで、次の操作を実行します。

    1. Lambda 関数の名前と説明を入力します。例えば、関数名を RDSInstanceStateChange とします。

    2. [Runtime] (ランタイム) では、[Node.js 16x] を選択します。

    3. [Architecture] (アーキテクチャ) では、[x86_64] を選択します。

    4. [Execution role] (実行ロール) では、次のいずれかを実行します。

      • [基本的な Lambda アクセス権限で新しいロールを作成] を選択します。

      • [Existing role] (既存のロール) では、[Use an existing role] (既存のロールを使用する) を選択します。使用するロールを選択します。

    5. [Create function] (関数の作成) を選択します。

  5. [RDSInstanceStateChange] ページで、次の操作を行います。

    1. [コードソース] で、[index.js] を選択します。

    2. で、[index.js] ウィンドウで、既存のコードを削除します。

    3. 次のコードを入力します。

      console.log('Loading function'); exports.handler = async (event, context) => { console.log('Received event:', JSON.stringify(event)); };
    4. [デプロイ] を選択します。

ステップ 2: ルールを作成する

Amazon RDS インスタンスを起動するたびに Lambda 関数を実行するルールを作成します。

EventBridge ルールを作成するには
  1. Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。

  2. ナビゲーションペインで [Rules] (ルール) を選択します。

  3. [‬Create rule]‭ (ルールの作成) を選択します。

  4. ルールの名前と説明を入力します。例えば、「RDSInstanceStateChangeRule」と入力します。

  5. [Rule with an event pattern] (イベントパターンを持つルール) を選択してから、[Next] (次へ) を選択します。

  6. [Event source] (イベントソース) で、[AWS events or EventBridge partner events] ( イベントまたは EventBridge パートナーイベント) を選択します。

  7. 下にスクロールして、[Event pattern] (イベントパターン) セクションを展開します。

  8. [イベントソース] で [AWS のサービス] を選択します。

  9. [AWS service] (AWS サービス) では [Relational Database Service (RDS)] (リレーショナルデータベースサービス (RDS)) を選択します。

  10. [イベントタイプ] で、[RDS DB インスタンスイベント] を選択します。

  11. デフォルトのイベントパターンのままにします。続いて、[Next] (次へ) を選択します。

  12. [Target types] (ターゲットタイプ) では、AWS[services] (サービス) を選択します。

  13. [Select a target] (ターゲットを選択) では、[Lambda function] (Lambda 関数) を選択します。

  14. [Function] (関数) では、作成した Lambda 関数を選択します。続いて、[Next] (次へ) を選択します。

  15. [Configure Tags] (タグの設定) で、[Next] (次へ) を選択します。

  16. ルール内の手順を確認します。次に、[Create rule] (ルールの作成) を選択します。

ステップ 3: ルールをテストする

ルールをテストするには、RDS DB インスタンスをシャットダウンします。インスタンスのシャットダウンの数分後に、Lambda 関数が呼び出されたことが確認できます。

DB インスタンスを停止してルールをテストするには
  1. Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. RDS DB インスタンスを停止します。

  3. Amazon EventBridge コンソール (https://console.aws.amazon.com/events/) を開きます。

  4. ナビゲーションペインで、[ルール] を選択し、作成したルールの名前を選択します。

  5. [ルールの詳細] で、[モニタリング] を選択します。

    Amazon CloudWatch コンソールにリダイレクトされます。リダイレクトされない場合は、[CloudWatch でメトリクスを表示] をクリックします。

  6. [すべてのメトリクス] で、作成したルールの名前を選択します。

    グラフには、ルールが呼び出されたことが示されます。

  7. ナビゲーションペインで、[Log groups] (ロググループ) を選択します。

  8. Lambda 関数 (/aws/lambda/function-name) のロググループの名前を選択します。

  9. 起動したインスタンスの関数によって提供されるデータを表示するログのストリーミング名を選択します。次のような受信イベントが表示されます。

    { "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 イベントの例については、「Amazon RDS のイベントの概要」を参照してください。

  10. (オプション) 終了したら、Amazon RDS コンソールを開き、停止したインスタンスをスタートできます。