FailedInvocations が記録されて ECS タスクが起動しないときの対処方法

CloudWatch にログがない場合は、CloudTrail も確認します
2022.09.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

Amazon ECS の「スケジュールされたタスク」を使用して、定期的なバッチ処理を実施しています。 先日、タスクが実施されていなかったので、CloudWatch メトリクスを確認したところFailedInvocationsが記録されていました。
呼び出しに失敗した場合に記録されるようですが、特にログなども残っていないので調査が難航しています。失敗した詳細などのログはどこかにあるのでしょうか。

どう対応すればいいの?

CloudTrail のイベント履歴をご確認ください。

EventBridge に設定した IAM ロールの権限や、ターゲット設定に誤りがあるとFailedInvocationsが記録されます。権限不足やターゲット設定に誤りがある場合は、CloudTrail に失敗の記録があることが多く、バッチ処理が実施される予定の時間帯の CloudTrail を確認すると、より詳細な調査ができることが期待できます。

CloudTrail の確認方法

CloudTrail コンソールを開き、「イベント履歴」をクリック。検索を楽にするため、歯車アイコンをクリック

次の項目を選択にして、「確認」をクリックします。

  • ローカルタイムゾーン
  • エラーコード

検索範囲をバッチ処理を含む時間帯に指定します。

「イベント名」を選択して、RunTaskで検索。「エラーコード」が記録されている失敗したイベントを探します。

イベント名をクリックすると、より詳細な情報が表示され、errorMessageから失敗の理由が確認できます。

"errorCode": "InvalidParameterException",
"errorMessage": "Error retrieving security group information for [sg-abcd123456789]: The security group 'sg-abcd123456789' does not exist (ErrorCode: InvalidGroup.NotFound)",

今回の場合は、指定したセキュリティグループが存在しないことが原因で呼び出しに失敗したようです。セキュリティグループの設定を修正すると事象の解消が期待できます。

参考資料

FailedInvocations データポイントが存在する場合、ターゲットの呼び出しに問題があります。FailedInvocations は永続的な障害を表し、誤った許可またはターゲットの設定ミスが原因となっている場合があります。