チュートリアル: EventBridge を使用して Amazon Kinesis ストリームにイベントを送信する - Amazon EventBridge

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

チュートリアル: EventBridge を使用して Amazon Kinesis ストリームにイベントを送信する

EventBridge で AWS API コールイベントAmazon Kinesis ストリームに送信したり、Kinesis Data Streams アプリケーションを作成したり、大量のデータを処理したりできます。このチュートリアルでは、Kinesis ストリームを作成し、Amazon EC2 インスタンスが停止したときにそのストリームにイベントを送信するルールを EventBridge コンソールで作成します。

前提条件

このチュートリアルでは、以下を使用します。

注記

このチュートリアルでは、AWS イベントと組み込みの aws.events スキーマレジストリを使用します。カスタムイベントをカスタムスキーマレジストリに手動で追加するか、スキーマ検出を使用することで、カスタムイベントのスキーマに基づいて EventBridge ルールを作成することもできます。

スキーマの詳細については、「Amazon EventBridge スキーマ」を参照してください。他のイベントパターンオプションを使用してルールを作成する方法の詳細については、「Amazon EventBridge でイベントに応答するルールの作成」を参照してください。

ステップ 1: Amazon Kinesis ストリームを作成する

ストリームを作成するには、コマンドプロンプトで、create-stream AWS CLI コマンドを実行します。

aws kinesis create-stream --stream-name test --shard-count 1

ストリームのステータスが ACTIVE の場合、ストリームは準備完了です。ストリームの状態を確認するには、describe-stream コマンドを使用します。

aws kinesis describe-stream --stream-name test

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

Amazon EC2 インスタンスを停止したときにイベントをストリームに送信するルールを作成します。

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

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

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

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

  5. [Event bus] (イベントバス) として、[default] (デフォルト) を選択します。

  6. ルールタイプ では、イベントパターンを持つルール] を選択します。

  7. [Next] を選択します。

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

  9. [Creation method] (作成方法) で、[Use schema] (スキーマを使用する) を選択します。

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

    1. [Schema type] (スキーマの種類) で、[Select schema from Schema registry] (スキーマレジストリからスキーマを選択する) を選択します。

    2. [Schema registry] (スキーマレジストリ) で、ドロップダウンリストから [aws.events] を選択します。

    3. [Schema] (スキーマ) で、ドロップダウンリストから [aws.ec2@EC2InstanceStateChangeNotification] を選択します。

      EventBridge で [Models] (モデル) の下にイベントスキーマが表示されます。

      EventBridge で、イベントパターン用としてではなく、イベント用として必要なプロパティの横に赤いアスタリスクが表示されます。

    4. [Models] (モデル) で、以下のイベントフィルタープロパティを設定します。

      1. [state] プロパティの横にある [+ Edit] (+ 編集) を選択します。

        [Relationship] (関係) は空のままにします。[] に「running」と入力します。[Set] (セット) を選択します。

      2. [source] プロパティの横にある [+ Edit] (+ 編集) を選択します。

        [Relationship] (関係) は空のままにします。[] に「aws.ec2」と入力します。[Set] (セット) を選択します。

      3. [detail-type] プロパティの横にある [+ Edit] (+ 編集) を選択します。

        [Relationship] (関係) は空のままにします。[] に「EC2 Instance State-change Notification」と入力します。[Set] (セット) を選択します。

    5. 作成したイベントパターンを表示するには、[Generate event pattern in JSON] (JSON でイベントパターンを生成する) を選択します。

      EventBridge に JSON でイベントパターンが表示されます。

      { "detail": { "state": ["running"] }, "detail-type": ["EC2 Instance State-change Notification"], "source": ["aws.ec2"] }
  11. [Next] を選択します。

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

  13. [Select a target] (ターゲットの選択) では、ドロップダウンリストから [Kinesis stream] (Kinesis ストリーム) を選択します。

  14. [Stream] (ストリーム) として、[Step 1: Create an Amazon Kinesis stream] (ステップ 1: Amazon Kinesis ストリームの作成) セクションで作成した Kinesis ストリームを選択します。この例では、test を選択します。

  15. [Execution role] (実行ロール) として、[Create a new for role for this specific resource] (この特定のリソースのための新しいロールを作成する) を選択します。

  16. [Next] を選択します。

  17. [Next] を選択します。

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

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

ルールをテストするには、Amazon EC2 インスタンスを停止します。インスタンスが停止されるまで数分間待ったら、CloudWatch メトリクスを調べて、関数が実行されたことを確認します。

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

  2. インスタンスを起動します。詳細については、「Amazon EC2 ユーザーガイド」の「Amazon EC2 インスタンスの起動」を参照してください。

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

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

    作成したルールの名前を選択し、[Metrics for the rule] (ルールのメトリクス) を選択します。

  5. (オプション) 終了したら、インスタンスを終了します。詳細については、「Amazon EC2 ユーザーガイド」の「インスタンスの終了」を参照してください。

ステップ 4: イベントが送信されたことを確認する

AWS CLI を使用してストリームからレコードを取得し、イベントが送信されたことを確認できます。

レコードを取得するには
  1. Kinesis ストリームからの読み込みを開始するには、コマンドプロンプトで get-shard-iterator コマンドを使用します。

    aws kinesis get-shard-iterator --shard-id shardId-000000000000 --shard-iterator-type TRIM_HORIZON --stream-name test

    以下は出力例です。

    { "ShardIterator": "AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=" }
  2. レコードを取得するには、次の get-records コマンドを使用します。前のステップの出力からシャードイテレーターを使用します。

    aws kinesis get-records --shard-iterator AAAAAAAAAAHSywljv0zEgPX4NyKdZ5wryMzP9yALs8NeKbUjp1IxtZs1Sp+KEd9I6AJ9ZG4lNR1EMi+9Md/nHvtLyxpfhEzYvkTZ4D9DQVz/mBYWRO6OTZRKnW9gd+efGN2aHFdkH1rJl4BL9Wyrk+ghYG22D2T1Da2EyNSH1+LAbK33gQweTJADBdyMwlo5r6PqcP2dzhg=

    コマンドが成功すると、指定シャードのストリームからレコードをリクエストします。0 以上のレコードを受け取ることができます。返されるレコードは、ストリーム内のすべてのレコードを表すとは限りません。ご希望のデータを受け取っていない場合は、get-records を継続して呼び出します。

  3. Kinesis のレコードは Base64 でエンコードされています。Base64 デコーダーを使用してデータを復号すめと、それが JSON 形式でストリームに送信されたイベントであることを確認できます。

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

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

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

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

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

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

Kinesis ストリームを削除するには
  1. Kinesis コンソールの [Data streams] (データストリーム) ページを開きます。

  2. 作成したストリームを選択します。

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

  4. fiekd で delete と入力し、[Delete] (削除) を選択します。