はじめに
EventBridgeとECSを連携させる際、イベントは正常に検知されているのに、ターゲットのECSタスクが起動しない問題に遭遭遇しました。CloudTrailを活用することで、原因を効率的に特定することができました。本記事では、その調査プロセスを共有します。
問題の背景
構成概要:
Amazon EventBridge: イベントソース
ECSタスク: 実行ターゲット
期待動作: 特定のイベント発火時に自動的にECSタスクを起動
発生した問題:
EventBridgeのコンソールでは、イベントが正常にマッチしていることが確認できたにもかかわらず、タスク実行に失敗していました。
症状の確認
EventBridge コンソール表示:
- Rule: 有効(Enabled)
- Invocations: ✓ カウントが増える(イベント検知できている)
- Failed Invocations: ✗ エラーカウントも増えている
CloudWatch Logs確認:
• ECS側のタスクログ: 記録なし(タスクが起動していない)
確認した項目
-
EventBridge Rule の状態確認
→ Enabled になっているか -
ターゲット設定の確認
→ Role ARN が正しく設定されているか -
ECSクラスタの状態確認
→ 適切なクラスタを指定しているか -
IAM ロールの基本的な権限確認
→ 必要な権限がアタッチされてるか
ここまでの確認では、目立った設定ミスが見当たりません。
やはり、FailedInvocationsの原因をまずは把握するべきですね。
そこで、CloudTrailでイベント呼び出しのログを探してみる事にしました。
CloudTrailとは
CloudTrailはAWS APIコールを記録するサービスで、失敗したAPI呼び出しのエラー詳細が記録されます
CloudTrail コンソールでの検索手順
ステップ1: CloudTrail コンソールにアクセス
ステップ2: イベント履歴を検索
ステップ3: RunTask イベントの詳細を確認
根本の原因
LaunchTypeの指定が間違っていた。
FARGATEを指定すべきところを、EC2にしてしまってました。
こちらを修正する事で、正常にターゲットのECSタスクが起動するようになりました!
おわりに
FailedInvocationsの原因解析には、CloudTrailでの解析が一番の近道となる事が今回の経験で分かりました。
エラーメッセージが不十分な場合でも、CloudTrailには詳細なAPIレベルのエラー情報が記録されています。今後同様の問題に遭遇した際は、まずCloudTrailを確認するようにしたいと思います。


