翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: 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
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-" }] } }
ステップ
前提条件
このチュートリアルを完了するには、以下のリソースが必要です。
AWS アカウント。AWS アカウントをまだ作成していない場合は、アカウントを作成します
。 AWS CLI がインストールされました。をインストールするには AWS CLI、「バージョン AWS CLI 2 のインストール、更新、アンインストール」を参照してください。
Node.js 12.x インストール済み。Node.js をインストールするには、ダウンロード
を参照してください。
ステップ 1: アプリケーションを作成する
サンプルアプリケーションを設定するには、 AWS CLI と Git を使用して必要な AWS リソースを作成します。
アプリケーションを作成するには
-
Git をインストール
し、ローカルマシンに AWS Serverless Application Model CLI をインストールします。 -
新しいディレクトリを作成し、ターミナルのそのディレクトリに移動します。
-
コマンドラインで
git clone https://github.com/aws-samples/amazon-eventbridge-producer-consumer-example
と入力します。 -
コマンドラインから、以下のコマンドを実行します。
cd ./amazon-eventbridge-producer-consumer-example sam deploy --guided
-
ターミナルで次のように実行します。
-
Stack Name
にスタックの名前を入力します。たとえば、スタックTest
に名前を付けます。 -
AWS Region
にはリージョンと入力します。例えば、us-west-2
と指定します。 -
Confirm changes before deploy
に「Y
」と入力します。 -
[
Allow SAM CLI IAM role creation
] に「Y
」と入力します。 -
[
Save arguments to configuration file
] に「Y
」と入力します。 -
SAM configuration file
に「samconfig.toml
」と入力します。 -
SAM configuration environment
に「default
」と入力します。
-
ステップ 2: アプリケーションを実行する
これでリソースが設定されたので、コンソールを使用して関数をテストします。
アプリケーションを実行するには
AWS SAM アプリケーションをデプロイしたのと同じリージョンで Lambda コンソール
を開きます。 プレフィックス [atm-demo] が付いた 4 つの Lambda 関数があります。[atmProducerFn] 関数を選択してから、[Actions] (アクション)、[Test] (テスト) を選択します。
Name (名前) には、
Test
と入力します。[テスト] を選択します。
ステップ 3: ログを確認し、アプリケーションが動作することを検証する
これでアプリケーションが実行されたので、コンソールを使用して CloudWatch Logs を確認します。
ログを確認するには
AWS SAM アプリケーションを実行したのと同じリージョンで CloudWatch コンソール
を開きます。 [Logs] を選択し、ロググループを選択します。
[atmConsumerCase1] を含むロググループを選択します。ATM によって承認された 2 つの取引を表す 2 つのストリームが表示されます。アウトプットを表示するログストリームを選択します。
ロググループのリストに戻り、[atmConsumerCase2] を含むロググループを選択します。ニューヨーク のロケーションフィルターに一致する、2 つの取引を表す 2 つのストリームが表示されます。
ロググループのリストに戻り、atmConsumerCase3 を含むロググループを選択します。ストリームを開いて、拒否された取引を確認します。
ステップ 4: リソースをクリーンアップする
このチュートリアル用に作成したリソースは、保持しない場合は削除できます。使用しなくなった AWS リソースを削除することで、 AWS アカウントへの不要な課金を防ぐことができます。
EventBridge ルールを削除するには
-
Eventbridge コンソールの [Rules
] (ルール) ページを開きます。 -
作成したルールを選択します。
-
[削除] を選択します。
-
[削除] を選択します。
Lambda 関数を削除するには
-
Lambda コンソールの [関数ページ]
を開きます。 -
作成した関数を選択します。
-
[Actions] (アクション) で、[Delete] (削除) を選択します。
-
[削除] を選択します。
CloudWatch Logs ロググループを削除するには
-
CloudWatch コンソール
を開きます。 -
[Logs] (ログ)、[Log groups] (ロググループ) を選択します。
-
このチュートリアルで作成したロググループを選択します。
-
[アクション]、[ロググループの削除] の順にクリックします。
-
[削除] を選択します。