

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

[Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html) インスタンスの状態の変化をログに記録する [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) 関数を作成できます。そうすると、状態の遷移や、関心のある 1 つ以上の状態への遷移があるたびに Lambda 関数を実行する[ルール](eb-rules.md)を作成します。このチュートリアルでは、新しいインスタンスが起動されるたびにログに記録します。

**Topics**
+ [ステップ 1: AWS Lambda 関数を作成する](#eb-ec2-create-lambda-function)
+ [ステップ 2: ルールを作成する](#eb-ec2-create-rule)
+ [ステップ 3: ルールをテストする](#eb-api-test-rule)
+ [ステップ 4: 成功を確認する](#success)
+ [ステップ 5: リソースをクリーンアップする](#cleanup)

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

状態変更[イベント](eb-events.md)のログを記録する Lambda 関数を作成します。ステップ 2 でルールを作成するときに、この関数を指定します。

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

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

1. **関数の作成** を選択します。

1. **Author from scratch** (製作者を最初から) を選択します。

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

1. 残りのオプションはデフォルトのまま、[**Create function**] (関数の作成) を選択します。

1. 関数ページの [**Code**] (コード) タブで、**index.js** をダブルクリックします。

1. 既存のコードを以下のコードに置き換えます。

   ```
   'use strict';
   
   exports.handler = (event, context, callback) => {
       console.log('LogEC2InstanceStateChange');
       console.log('Received event:', JSON.stringify(event, null, 2));
       callback(null, 'Finished');
   };
   ```

1. [**Deploy**‬] (デプロイ) をクリックします。

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

ステップ 1 で作成した Lambda 関数を実行するルールを作成します。Amazon EC2 インスタンスを起動すると、このルールが実行されます。

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

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

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

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

1. ルールの名前と説明を入力します。例えば、ルール `TestRule` に名前を付けます

1. **[Event bus]** (イベントバス) では、このルールに関連付けるイベントバスを選択します。このルールをアカウントからのイベントと一致させるには、**[default]** (デフォルト) を選択します。アカウントの AWS サービスがイベントを発行すると、常にアカウントのデフォルトのイベントバスに移動します。

1. **[Rule type]** (ルールタイプ) では、**[Rule with an event pattern]** (イベントパターンを持つルール) を選択します。

1. [**次へ**] を選択します。

1. **[Event source]** (イベントソース) では、**AWS [services]** (サービス) を選択します。

1. **[Event pattern]** (イベントパターン) の場合は、次のいずれかを実行します。

   1. **[Event source]** (イベントソース) では、ドロップダウンリストから **[ EC2]** を選択します。

   1. **[Event type]** (イベントタイプ) として、ドロップダウンリストから**[EC2 Instance State-change Notification]** (EC2 インスタンス状態変更通知) を選択します。

   1. **[Specific states(s)]** (特定の状態) を選択して、ドロップダウンリストから **[running]** (実行中) を選択します。

   1. **[Any instance]** (任意のインスタンス) を選択します。

1. [**次へ**] を選択します。

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

1. **ターゲットの選択**では、ドロップダウンリストから **[Lambda function]** (Lambda 関数) を選択します。

1. **[Function] (関数)** で、**[Step 1: Create a Lambda function] (ステップ 1：Lambda 関数を作成する)** セクションで作成した Lambda 関数を選択します。この例では、`LogEC2InstanceStateChange` を選択します。

1. [**次へ**] を選択します。

1. [**次へ**] を選択します。

1. ルールの詳細を確認し、**[Create rule]** (ルールの作成) を選択します。

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

Amazon EC2 コンソールを使用して Amazon EC2 インスタンスを停止することで、ルールをテストできます。インスタンスが停止するまで数分待ってから、CloudWatch コンソールで AWS Lambda メトリクスをチェックして、関数が実行されたことを確認します。

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

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. インスタンスを起動します。詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 インスタンスの起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/LaunchingAndUsingInstances.html)」を参照してください。

1. インスタンスを停止します。詳細については、「*Amazon EC2 ユーザーガイド*」の「[Amazon EC2 インスタンスの停止と起動](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Stop_Start.html)」を参照してください。

1. Lambda 関数からの出力を表示するには、以下の操作を実行します。

   1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

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

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

   1. 停止したインスタンスの関数によって提供されるデータを表示するログのストリーム名を選択します。

1. (オプション) 終了したら、停止したインスタンスを終了します。詳細については、「*Amazon EC2 ユーザーガイド*」の「[インスタンスを終了する](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html)」を参照してください。

## ステップ 4: 成功を確認する
<a name="success"></a>

CloudWatch ログに Lambda イベントがある場合、このチュートリアルは正常に完了しています。イベントが CloudWatch ログにない場合は、ルールが正常に作成されたことを確認してトラブルシューティングを開始し、ルールが正しく見える場合は、Lambda 関数のコードが正しいことを確認します。

## ステップ 5: リソースをクリーンアップする
<a name="cleanup"></a>

このチュートリアル用に作成したリソースは、保持しない場合は削除できます。使用しなくなった AWS リソースを削除することで、 AWS アカウントへの不要な課金を防ぐことができます。

**EventBridge ルールを削除するには**

1. Eventbridge コンソールの [[Rules](https://console.aws.amazon.com/events/home#/rules)] (ルール) ページを開きます。

1. 作成したルールを選択します。

1. [**Delete**] (削除) を選択します。

1. [**Delete**] (削除) を選択します。

**Lambda 関数を削除するには**

1. Lambda コンソールの [[関数]](https://console.aws.amazon.com/lambda/home#/functions) ページを開きます。

1. 作成した関数を選択します。

1. **[Actions]** (アクション) で、**[Delete]** (削除) を選択します。

1. [**削除**] を選択します。