スキップしてコンテンツを表示

Amazon ECS での、EventBridge ルールに関連する問題の解決方法を教えてください。

所要時間2分
0

Amazon EventBridge ルールにより、Amazon Elastic Container Service (Amazon ECS) タスクが呼び出されていません。

簡単な説明

EventBridge ルールを使用して Amazon ECS タスクを呼び出すと、EventBridge は RunTask API を呼び出してタスクを実行します。

EventBridge ルールは、次の理由により ECS タスクを呼び出せない場合があります。

  • EventBridge のルール設定が誤っている。
  • EventBridge ルールのターゲット設定が誤っている。
  • AWS Identity and Management (IAM) ロールに、タスクを実行するためのアクセス許可が欠けている。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

EventBridge のルール設定を確認する

EventBridge ルールが ENABLED ステータスになっているかどうかを確認してください。ステータスが DISABLED の場合は、ルールを再度アクティブにしてテストを実行し、そのルールがタスクを作成できるかどうかを判断します。

EventBridge コンソールまたは AWS CLI を使用するとルールのステータスを確認できます。

EventBridge コンソール

次の手順を実行します。

  1. EventBridge コンソールを開きます。
  2. ナビゲーションペインで [ルール] を選択します。
  3. [イベントバスを選択] でルールに関連付けられているイベントバスを選択します。
  4. ルールを選択してステータスを確認します。

AWS CLI

次の describe-rule コマンドを実行します。

aws events describe-rule --name "DailyLambdaFunction" --region "us-east-1"

注: us-east-1 は、実際の AWS リージョンに置き換えます。

コマンドの出力で State パラメータを参照し、ルールのステータスを確認します。ルールが DISABLED ステータスになっている場合は、AWS CloudTrail ログを参照し、ルールが無効化された理由を特定します。

イベントパターンが正しく、イベントソースからのイベントと一致していることを確認してください。イベントパターンを確認するには、EventBridge サンドボックスを使用します。

EventBridge ルールのターゲット設定を確認する

次の操作を行います。

  • EventBridge ルールのターゲットで ECS ClusterTaskDefinitionNetwork configuration の各パラメータが正しいことを確認します。
  • EventBridge の IAM ロールにタスクを実行するために必要なアクセス許可があることを確認します。

トラブルシューティングでは、次の Amazon CloudWatch メトリクスを参考にしてください。

  • TriggeredRules メトリクスが表示されていないか確認します。このメトリクスは、イベントがルールをトリガーした場合にのみ CloudWatch に表示されます。
  • Invocations メトリクスを参照すると、EventBridge がルールを呼び出し、ECS タスクを実行しようとした回数を確認できます。
  • FailedInvocations メトリクスを参照すると、失敗した呼び出しの数を判断できます。この値が大きい場合は、ターゲットが正しく構成されていない可能性があります。
    注: FailedInvocations メトリクスの確認には、Sum 統計情報が最も便利な統計情報です。

RunTask API コールが失敗した理由を特定する

次の手順を実行します。

  1. CloudTrail コンソールを開きます。
  2. ナビゲーションペインで、[Event history] (イベント履歴) を選択します。
  3. [ルックアップ属性] ドロップダウンリストで [イベント名] を選択します。
  4. テキストボックスに RunTask と入力し、RunTask API に関連するイベントを絞り込みます。
  5. ECS タスクの想定される実行時間に基づき、時間範囲を絞り込みます。
    注:時間範囲のプリセット値は、30 分、1 時間、3 時間、12 時間です。カスタム時間範囲を指定するには、[絶対範囲] を選択します。
  6. イベントを選択し、[イベントレコード] セクションで JSON イベントのレコードを確認します。errorCodeerrorMessage で障害の理由を探します。

EventBridge DLQ を使用する

EventBridge ルールはデッドレターキュー (DLQ) をサポートします。DLQ は、Amazon Simple Queue Service (Amazon SQS) を使用して失敗した呼び出しイベントを指定された標準キューに保存します。イベントルールがターゲットを呼び出さなかった際、EventBridge はその呼び出しの詳細とターゲットからの応答を含む JSON ペイロードを DLQ に配信します。DLQ で失敗したイベント配信を分析すると、問題解決の参考になります。

関連情報

Amazon EventBridge ルールに関する問題をトラブルシューティングする方法を教えてください

デッドレターキューを使用して EventBridge ルールの FailedInvocations をトラブルシューティングする方法を教えてください

AWS公式更新しました 6ヶ月前
コメントはありません

関連するコンテンツ