チュートリアル: Eventbridge を使用して Auto Scaling グループの状態をログに記録する - Amazon EventBridge

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

チュートリアル: Eventbridge を使用して Auto Scaling グループの状態をログに記録する

Auto Scaling グループが Amazon EC2 インスタンスを起動または終了するたびにイベントをログに記録し、そのイベントが成功したかどうかをログに記録する AWS Lambda 関数を実行できます。

Amazon EC2 Auto Scaling イベントを使用するその他のシナリオについては、Amazon EC2 Auto Scaling ユーザーガイドの「Auto Scaling イベントの処理に EventBridge を使用する」を参照してください。

このチュートリアルでは、Lambda 関数を作成し、Amazon EC2 Auto Scaling グループがインスタンスを起動または終了したときにその関数を呼び出す EventBridge コンソールのルールを作成します。

前提条件

このチュートリアルを完了するには、以下のリソースが必要です。

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

Lambda 関数を作成して、Auto Scaling グループのスケールアウトおよびスケールインイベントのログを記録します。

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

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

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

  4. Lambda 関数の名前を入力します。例えば、関数名を LogAutoScalingEvent とします。

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

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

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

    'use strict'; exports.handler = (event, context, callback) => { console.log('LogAutoScalingEvent'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
  8. [Deploy‬] (デプロイ) をクリックします。

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

ステップ 1 で作成した Lambda 関数を実行するルールを作成します。ルールは、Auto Scaling グループがインスタンスを起動または停止したときに実行されます。

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

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

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

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

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

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

  7. [Next] (次へ) をクリックします。

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

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

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

    2. [Event type] (イベントタイプ) では、ドロップダウンリストから[Instance Launch and Terminate] (インスタンスの起動と削除) を選択します。

    3. [Any instance event] (任意のインスタンスイベント) と [Any group name] (任意のグループ名) を選択します。

  10. [Next] (次へ) をクリックします。

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

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

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

  14. [Next] (次へ) をクリックします。

  15. [Next] (次へ) をクリックします。

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

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

ルールをテストするには、インスタンスを起動するように Auto Scaling グループを手動でスケーリングします。スケールアウトイベントが発生するまで数分まってから、Lambda 関数が呼び出されたことを確認します。

Auto Scaling グループを使用してルールをテストするには
  1. Auto Scaling グループのサイズを増やすには、以下の操作を実行します。

    1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

    2. ナビゲーションペインで、[Auto Scaling]、[Auto Scaling グループ] の順に選択します。

    3. Auto Scaling グループのチェックボックスを選択します。

    4. [Details (詳細)] タブで、[Edit (編集)] を選択します。[Desired] で、希望する容量を 1 つ増やします。たとえば、現在の値が 2 の場合は 3 と入力します。希望するキャパシティーは、グループの最大サイズと同じかそれ以下である必要があります。[Desired] の新しい値が、[Max] よりも大きい場合、[Max] を更新する必要があります。完了したら、[Save ] を選択します。

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

    1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

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

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

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

  3. (オプション) 終了すると、Auto Scaling グループが以前のサイズに戻るように、必要な容量を減らすことができます。

ステップ 4: 成功を確認する

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

ステップ 5: リソースをクリーンアップする

このチュートリアル用に作成したリソースは、保存を希望しない限り、すぐに削除できます。使用しなくなった AWS リソースを削除することで、AWS アカウントに請求される料金が発生しないようにできます。

EventBridge ルールを削除するには
  1. Eventbridge コンソールの [Rules] (ルール) ページを開きます。

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

  3. [Delete] (削除) をクリックします。

  4. [Delete] (削除) をクリックします。

Lambda 関数を削除するには
  1. Lambda コンソールの [Functions] (関数) ページを開きます。

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

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

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