

# Amazon Aurora イベントでトリガーするルールの作成
<a name="rds-cloud-watch-events"></a>

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

**Topics**
+ [チュートリアル: Amazon EventBridge を使用して DB インスタンスの状態変化をログに記録する](#log-rds-instance-state)

## チュートリアル: Amazon EventBridge を使用して DB インスタンスの状態変化をログに記録する
<a name="log-rds-instance-state"></a>

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

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

**Topics**
+ [ステップ 1: AWS Lambda 関数を作成する](#rds-create-lambda-function)
+ [ステップ 2: ルールを作成する](#rds-create-rule)
+ [ステップ 3: ルールをテストする](#rds-test-rule)

### ステップ 1: AWS Lambda 関数を作成する
<a name="rds-create-lambda-function"></a>

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

**Lambda 関数を作成するには**

1. AWS Lambda コンソール ([https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)) を開きます。

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

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

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

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

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

   1. **[Architecture]** (アーキテクチャ) では、**[x86\$164]** を選択します。

   1. **[Execution role]** (実行ロール) では、次のいずれかを実行します。
      + [**基本的な Lambda アクセス権限で新しいロールを作成**] を選択します。
      + **[Existing role]** (既存のロール) では、**[Use an existing role]** (既存のロールを使用する) を選択します。使用するロールを選択します。

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

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

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

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

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

      ```
      console.log('Loading function');
      
      exports.handler = async (event, context) => {
          console.log('Received event:', JSON.stringify(event));
      };
      ```

   1. [**デプロイ**] を選択します。

### ステップ 2: ルールを作成する
<a name="rds-create-rule"></a>

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

**EventBridge ルールを作成するには**

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

1. ナビゲーションペインで **[ルール]** を選択します。

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

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

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

1. **[イベントソース]** で、**[AWS イベントまたは EventBridge パートナーイベント]** を選択してください。

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

1. **イベントソース** で **AWS のサービス** を選択してください。

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

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

1. デフォルトのイベントパターンのままにします。次に、**[次へ]** を選択します。

1. **[ターゲットタイプ]** では、**[AWS サービス]** を選択します。

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

1. **[Function]** (関数) では、作成した Lambda 関数を選択します。次に、**[次へ]** を選択します。

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

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

### ステップ 3: ルールをテストする
<a name="rds-test-rule"></a>

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

**DB インスタンスを停止してルールをテストするには**

1. Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

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

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

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

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

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

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

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

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

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

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

   ```
   {
       "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 のイベントの概要](working-with-events.md#rds-cloudwatch-events.sample)」を参照してください。

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