S3・EventBridge・SQSのイベント連携をCloudTrailやダッシュボードで障害調査した
- POSTS
1. はじめに AWSの構築や運用を担当していると、AWSリソースの設定を行ったにもかかわらず、期待した処理が実行されないことがあります。
例えば、S3イベントを起点として、EventBridge、SQS、Lambdaと処理が連携する以下のような構成があるとします。
S3 イベント ↓ Amazon EventBridge ↓ Amazon SQS ↓ Amazon Lambda S3でイベントが発生していないのか、EventBridgeでイベントを検知できていないのか、SQSへメッセージが送信されていないのかなど、処理のどの段階で問題が発生しているのかを切り分ける必要があります。
今回は、AWS CloudTrailやその他ダッシュボードを利用して、AWSリソースが期待どおりに動作しない場合に、どのように原因を調査していくのかを整理します。
2. AWS CloudTrailを障害調査に利用する CloudTrailでは、AWSユーザーやIAMロール、AWSサービスによって実行されたAPI操作をイベントとして確認できます。
3. 障害調査の流れ ここでは、以下の構成でSQSにメッセージが送信されないケースを例に調査方法を確認します。
S3 イベント ↓ Amazon EventBridge ↓ Amazon SQS ↓ AWS Lambda この構成では、S3にオブジェクトが配置された際に発生するイベントをAmazon EventBridgeが検知し、イベントをAmazon SQSへ送信します。
その後、SQSに送信されたメッセージをLambdaが取得して処理します。
しかし、何らかの原因によってSQSにメッセージが送信されない場合、S3、EventBridge、SQSのどこに問題があるのかを切り分ける必要があります。
そこで、CloudTrailに記録されたイベントを確認し、AWSサービス間でどのようなAPI操作が行われたのかを追跡していきます。
4. 調査 ここでは、S3にファイルを配置したにもかかわらず、Lambdaが処理を実行していないケースを考えます。
今回の構成では、S3へのファイル配置を起点に処理が順番に行います。
S3 ↓ EventBridge ↓ SQS ↓ Lambda Lambdaが実行されていない場合、はじめにLambdaを確認するのではなく、処理がどこまで進んでいるのか、どこで止まっているのかを確認していく必要があります。
4.1 S3へのファイル配置を確認する 所定のバケットにファイルが配置されていることを確認します。
配置されている。
4.2 EventBridgeを確認する 次に、S3へのファイル配置をきっかけとして、EventBridgeがイベントを検知できているかを確認します。