Amazon Web Services ブログ

Amazon EventBridge Pipes でのロギングサポートのご紹介

AWSはEventBridge Pipesによるロギングのサポートを発表しました。Amazon EventBridge Pipes は、イベントのプロデューサとコンシューマを接続し、オプションでフィルタ、変換、エンリッチメントを行うことができるポイント・ツー・ポイントの統合ソリューションです。EventBridge Pipesを利用することで、イベント駆動型アプリケーションを構築する際に、開発者が記述・管理する必要のある統合コードの量を削減できます。よくある統合ソリューションには、Amazon Kinesis streamsとフィルタリングの接続、Amazon DynamoDBAmazon EventBridgeの統合、Amazon SQSAWS Step Functionsの統合などがあります。

eventbridge-pipes-overview

EventBridge Pipesのロギングでは、パイプ実行のさまざまな段階についての洞察が得られます。これはAmazon CloudWatchのメトリクスサポートを拡張し、トラブルシューティングとデバッグのための方法を提供します。

パイプの実行ステップ内の様々な成功シナリオと失敗シナリオを把握できるようになりました。イベント変換またはエンリッチメントが成功または失敗した場合、ログを使用してより深く掘り下げ、構成されたパイプに問題がないかトラブルシューティングを開始することができます。

EventBridge Pipesの実行ステップ

パイプの実行ステップを理解することは、ログに記録される情報の量を決定する適切なログレベルを選択するのに役立ちます。

パイプの実行は、ソースからターゲットに移動するパイプによって受信されるイベントまたはイベントのバッチです。イベントがパイプを通過すると、AWS Step FunctionsAWS LambdaAmazon API GatewayEventBridge API Destinationsを使用して、フィルタリング、変換、またはエンリッチメントをすることができます。

パイプの実行は、エンリッチメントとターゲットの2つの主要なステージで構成されます。これらのステージは両方とも、変換と呼び出しのステップを含みます。

Input Transformer を使用すると、イベントがエンリッチメントを受けたり、下流のターゲットにディスパッチされる前に、イベントのペイロードを変更することができる。これにより、構成されたパイプの実行中に、イベントデータの操作をきめ細かく制御することができます。

パイプの実行が開始されると、実行はエンリッチメントの段階に入ります。エンリッチメントステージを設定しない場合、実行はターゲットステージに進みます。

pipes_logs_execution_flow

パイプの実行、変換、エンリッチメント、ターゲットの各フェーズで、EventBridge はデバッグやトラブルシューティングに役立つ情報をログに記録できます。パイプのログには、ペイロード、エラー、変換、AWSリクエスト、AWSレスポンスが含まれます。

パイプ実行の詳細については、こちらのドキュメントを参照してください。

EventBridge Pipes でログレベルを設定

パイプでロギングを有効にすると、EventBridge は実行ステップごとにログ・エントリを作成し、これらのログを指定したログ宛先に送信します。

EventBridge Pipesは3つのログ送信先をサポートしています: Amazon CloudWatch Logs、Amazon Kinesis Data Firehose stream、Amazon S3です。送信されるレコードは、パイプのログ・レベル(OFF、ERROR、INFO、TRACE)を設定することでカスタマイズできます。

  • OFF – EventBridge はレコードを送信しません。
  • ERROR – EventBridge は、パイプの実行中に発生したエラーに関連するレコードを送信します。例えば、Execution Failed、Execution Timeout、Enrichment Failures などがあります。
  • INFO – EventBridge は、パイプ実行中に実行されたエラーと選択された情報に関連するレコードを送信します。例としては、Execution Started、Execution Succeeded、Enrichment Stage Succeeded などがあります。
  • TRACE – EventBridge は、パイプ実行の任意のステップ中に生成されたすべてのレコードを送信します。

ERRORログレベルは、失敗したパイプ実行の背後にある理由を知る上で有益です。パイプ実行はタイムアウト、エンリッチメントの失敗、変換の失敗、ターゲット呼び出しの失敗など、さまざまな理由で失敗することがあります。ERROR ログを有効にすると、パイプエラーの具体的な原因を知ることができ、問題の解決が容易になります。

INFOログレベルは、ERROR情報をさらに詳細に補足します。INFO ログレベルは、エラーを通知するだけでなく、パイプ実行の開始、エンリッチメントフェーズへの移行、変換フェーズへの移行、ターゲットステージの開始と正常終了に関する洞察を提供します。

より詳細な分析のために、パイプの実行に関する包括的な洞察を得るために TRACE ログレベルを使用することができます。これはサポートされている全てのパイプログを包含し、INFO や ERROR ログを超えた詳細なビューを提供します。TRACE ログレベルでは、スキップされたパイプ実行ステージや、変換やエンリッチメントプロセスの開始などの重要な情報が明らかになります。

ログレベルと送信されるログの詳細については、ドキュメントを参照してください。

EventBridge Pipesのロギングに実行データを含める

さらにデバッグを助けるためにパイプログ内に実行データを含めることを選択できます。このデータはイベントペイロード、AWS リクエスト、および構成されたエンリッチメントとターゲットコンポーネントに送受信されたレスポンスで構成されます。

また、パイプの実行中に AWS サービスに送信されたペイロード、リクエスト、およびレスポンスに関するさらなる洞察を得るために、実行データを使用することもできます。

pipes-logs

実行データを組み込むことで、パイプの実行をより深く理解し、発生した問題のデバッグを支援することができます。

ログ内の実行データには3つの部分があります:

  • payload: イベント自体の内容。イベントのペイロードには機密情報が含まれている可能性があり、EventBridge はその内容を編集しようとしません。実行データを含めるかどうかはオプションで、オフにすることもできます。
  • awsRequest: エンリッチメントまたはターゲットにシリアライズされた JSON 形式で送信されたリクエスト。API Destinations の場合、これにはそのエンドポイントに送信された HTTP リクエストが含まれます。
  • awsResponse: エンリッチメントまたはターゲットがJSON形式で返すレスポンス。API Destinationsの場合、これは設定されたエンドポイントから返されるレスポンスです。

イベントのペイロードは、イベント自体が更新可能な場合に入力されます。これらのステージには、最初のパイプ実行、エンリッチメントフェーズ、ターゲットフェーズが含まれる。awsRequestawsResponse は、どちらもエンリッチメントとターゲティングの最終段階で生成されます。

ログレベルと実行データの詳細については、こちらのドキュメントをご覧ください。

EventBridge Pipes ログを使い始める

この例では、ロギングを有効にして実行データを含むパイプを作成します。パイプは、エンリッチメントステップなしでターゲット上の入力トランスフォーマーを使用して2つの Amazon SQS キューを接続します。Input Transformer は、ターゲットに到達する前にイベントのペイロードをカスタマイズします。

  1. ソースキューとターゲットキューの作成
# ソース用のキューを作成する
aws sqs create-queue --queue-name pipe-source
# ターゲット用のキューを作成する
aws sqs create-queue --queue-name pipe-target
  1. EventBridge Pipesに移動し、Create pipe を選択します。

new-eventbridge-pipe

  1. ソースとして SQS を選択し、SQS queue として pipe-source を選択します。

setting-up-pipe-source

  1. フィルタリングとエンリッチメントのフェーズをスキップして、新しい Target を追加します。Target サービスとして SQS を、Queue として pipe-target を選択します。

setting-up-target

  1. ターゲット入力トランスフォーマセクションを開き、トランスフォーマーフィールドにトランスフォーマーコードを入力します。
{
  "body": "Favorite food is <$.body>"
}
  1. Pipe settings を選択して、新しいパイプのロググループを設定します。

pipe-settings

  1. CloudWatch Logs がログ宛先として設定されていることを確認し、ログレベルとして Trace を選択する。“Include execution data ” チェックボックスをチェックします。これにより、全てのトレースが新しいCloudWatchロググループにログされ、パイプで送信されるSQSメッセージが含まれます。

pipes-logs

  1. Create Pipe を選択
  2. 送信元キューに SQS メッセージを送信します。
# キューURLの取得
aws sqs get-queue-url --queue-name pipe-source
# URLを使ってキューにメッセージを送信する 
aws sqs send-message --queue-url {QUEUE_URL} --message-body "pizza"
  1. 全てのトレースログはモニタリングタブに表示されます。詳細は CloudWatch Logs セクションを参照してください。

pipes-monitoring

まとめ

EventBridge Pipes は、イベント・プロデューサとコンシューマ間のポイント・ツー・ポイントの統合を可能にします。EventBridge Pipes でログがサポートされたことで、パイプ実行のさまざまな段階を把握できるようになりました。パイプのログ送信先は CloudWatch Logs、Kinesis Data Firehose、Amazon S3 に設定できます。

EventBridge Pipes は3つのログレベルをサポートしています。ERROR ログレベルは、エラーに関連するレコードをログ宛先に送信するように EventBridge を構成します。INFO ログレベルは、パイプ実行中のエラーおよび選択された情報に関連するレコードを送信するように EventBridge を構成します。TRACE ログレベルは、生成されたすべてのレコードをログ宛先に送信します。

ログに実行データを含めることができ、これにはイベント自体、およびパイプで構成された AWS サービスに対して行われたAWSリクエストとレスポンスが含まれます。これは、パイプの実行に関する更なる洞察を得るのに役立ちます。EventBridge Pipes Logs の詳細については、ドキュメントをお読みください。

サーバーレスの学習リソースについては、Serverless Land をご覧ください。

この記事の翻訳は Solutions Architect ポールが担当しました。原文はこちらからご覧いただけます。