チュートリアル: Amazon EventBridge サンプルアプリケーションを作成する - Amazon EventBridge

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

チュートリアル: Amazon EventBridge サンプルアプリケーションを作成する

EventBridge を使用して、ルールを使用した特定の Lambda 関数にイベントをルーティングできます。

このチュートリアルでは、 AWS CLI、Node.js、および GitHub リポジトリのコードを使用して以下を作成します。

  • 銀行 ATM トランザクションのイベントを生成する AWS Lambda 関数。

  • EventBridge ルールのターゲットとして使用する 3 つの Lambda 関数。

  • また、イベントパターンに基づいて作成したイベントを、正しいダウンストリーム関数にルーティングするルール。

この例では、 AWS SAM テンプレートを使用して EventBridge ルールを定義します。EventBridge と AWS SAM テンプレートの使用の詳細については、AWS Serverless Application Model テンプレートを使用して Amazon EventBridge リソースをデプロイする を参照してください。

レポでは、atmProducer サブディレクトリに handler.js が含まれ、イベントを生成する ATM サービスを表しています。このコードは Node.js で記述された Lambda ハンドラーで、JavaScript コードのこの行を使用する AWS SDK からイベントを EventBridge に発行します。

const result = await eventbridge.putEvents(params).promise()

このディレクトリには events.js を含み、Entries 配列にいくつかのテストトランザクションをリストしています。JavaScript では、1 つのイベントは次のように定義されています。

{ // Event envelope fields Source: 'custom.myATMapp', EventBusName: 'default', DetailType: 'transaction', Time: new Date(), // Main event body Detail: JSON.stringify({ action: 'withdrawal', location: 'MA-BOS-01', amount: 300, result: 'approved', transactionId: '123456', cardPresent: true, partnerBank: 'Example Bank', remainingFunds: 722.34 }) }

イベントの詳細セクションでは、トランザクション属性を指定します。これには ATM のロケーション、金額、パートナー銀行、取引の結果が含まれます。

atmConsumer サブディレクトリの handler.js ファイルには、3 つの関数が含まれています。

exports.case1Handler = async (event) => { console.log('--- Approved transactions ---') console.log(JSON.stringify(event, null, 2)) } exports.case2Handler = async (event) => { console.log('--- NY location transactions ---') console.log(JSON.stringify(event, null, 2)) } exports.case3Handler = async (event) => { console.log('--- Unapproved transactions ---') console.log(JSON.stringify(event, null, 2)) }

各関数はトランザクションイベントを受信し、console.log ステートメントから Amazon CloudWatch Logs に記録されます。コンシューマー関数はプロデューサーとは独立して動作し、イベントのソースを認識しません。

ルーティングロジックは、アプリケーションの AWS SAM テンプレートによってデプロイされる EventBridge ルールに含まれています。ルールは、イベントの受信ストリームを評価し、一致するイベントをターゲットの Lambda 関数にルーティングします。

ルールでは、一致するイベントと同じ構造の JSON オブジェクトであるイベントパターンを使用します。ルールの 1 つのイベントパターンを次に示します。

{ "detail-type": ["transaction"], "source": ["custom.myATMapp"], "detail": { "location": [{ "prefix": "NY-" }] } }

前提条件

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

ステップ 1: アプリケーションを作成する

サンプルアプリケーションを設定するには、 AWS CLI と Git を使用して必要な AWS リソースを作成します。

アプリケーションを作成するには
  1. AWSにサインインします

  2. Git をインストール、ローカルマシンに AWS Serverless Application Model CLI をインストールします。

  3. 新しいディレクトリを作成し、ターミナルのそのディレクトリに移動します。

  4. コマンドラインで git clone https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example と入力します。

  5. コマンドラインから、以下のコマンドを実行します。

    cd ./amazon-eventbridge-producer-consumer-example sam deploy --guided
  6. ターミナルで次のように実行します。

    1. Stack Name にスタックの名前を入力します。たとえば、スタック Test に名前を付けます。

    2. AWS Region にはリージョンと入力します。例えば、us-west-2 と指定します。

    3. Confirm changes before deploy に「Y」と入力します。

    4. [Allow SAM CLI IAM role creation] に「Y」と入力します。

    5. [Save arguments to configuration file] に「Y」と入力します。

    6. SAM configuration file に「samconfig.toml」と入力します。

    7. SAM configuration environment に「default」と入力します。

ステップ 2: アプリケーションを実行する

これでリソースが設定されたので、コンソールを使用して関数をテストします。

アプリケーションを実行するには
  1. AWS SAM アプリケーションをデプロイしたのと同じリージョンで Lambda コンソールを開きます。

  2. プレフィックス [atm-demo] が付いた 4 つの Lambda 関数があります。[atmProducerFn] 関数を選択してから、[Actions] (アクション)[Test] (テスト) を選択します。

  3. Name (名前) には、Test と入力します。

  4. [テスト] を選択します。

ステップ 3: ログを確認し、アプリケーションが動作することを検証する

これでアプリケーションが実行されたので、コンソールを使用して CloudWatch Logs を確認します。

ログを確認するには
  1. AWS SAM アプリケーションを実行したのと同じリージョンで CloudWatch コンソールを開きます。

  2. [Logs] を選択し、ロググループを選択します。

  3. [atmConsumerCase1] を含むロググループを選択します。ATM によって承認された 2 つの取引を表す 2 つのストリームが表示されます。アウトプットを表示するログストリームを選択します。

  4. ロググループのリストに戻り、[atmConsumerCase2] を含むロググループを選択します。ニューヨーク のロケーションフィルターに一致する、2 つの取引を表す 2 つのストリームが表示されます。

  5. ロググループのリストに戻り、atmConsumerCase3 を含むロググループを選択します。ストリームを開いて、拒否された取引を確認します。

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

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

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

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

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

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

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

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

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

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

CloudWatch Logs ロググループを削除するには
  1. CloudWatch コンソールを開きます。

  2. [Logs] (ログ)[Log groups] (ロググループ) を選択します。

  3. このチュートリアルで作成したロググループを選択します。

  4. [アクション]、[ロググループの削除] の順にクリックします。

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