Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

Amazon EventBridge のトラブルシューティング

フォーカスモード
Amazon EventBridge のトラブルシューティング - Amazon EventBridge

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

このセクションのトピックを使用して、Amazon EventBridge のトラブルシューティングを行えます。

ルールは実行されましたが、Lambda 関数が呼び出されませんでした

Lambda 関数が実行されない理由としては、適切なアクセス許可がないことが考えられます。

Lambda 関数のアクセス許可を確認するには
  1. を使用して AWS CLI、関数と AWS リージョンで次のコマンドを実行します。

    aws lambda get-policy --function-name MyFunction --region us-east-1

    次のような出力が表示されます。

    { "Policy": "{\"Version\":\"2012-10-17\", \"Statement\":[ {\"Condition\":{\"ArnLike\":{\"AWS:SourceArn\":\"arn:aws:events:us-east-1:123456789012:rule/MyRule\"}}, \"Action\":\"lambda:InvokeFunction\", \"Resource\":\"arn:aws:lambda:us-east-1:123456789012:function:MyFunction\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Sid\":\"MyId\"} ], \"Id\":\"default\"}" }
  2. 以下のメッセージが表示される場合。

    A client error (ResourceNotFoundException) occurred when calling the GetPolicy operation: The resource you requested does not exist.

    または、出力が表示されたが、信頼できるエンティティとして events.amazonaws.com がポリシーにない場合は、以下のコマンドを実行します。

    aws lambda add-permission \ --function-name MyFunction \ --statement-id MyId \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule
  3. 出力に SourceAccount フィールドが含まれている場合は、削除する必要があります。SourceAccount 設定により、Eventbridge は関数を呼び出すことができなくなります。

注記

ポリシーが正しくない場合は、そのポリシーを削除してからルールに追加し直すことで、Eventbridge コンソールでルールを編集できます。Eventbridge コンソールで、ターゲットに対する適切なアクセス許可が設定されます。

特定の Lambda エイリアスまたはバージョンを使用する場合は、次に示すコマンドを使用して、aws lambda get-policy および aws lambda add-permission コマンドで --qualifier パラメータを追加する必要があります。

aws lambda add-permission \ --function-name MyFunction \ --statement-id MyId \ --action 'lambda:InvokeFunction' \ --principal events.amazonaws.com \ --source-arn arn:aws:events:us-east-1:123456789012:rule/MyRule --qualifier alias or version

ルールを作成または修正したが、テストイベントと一致しない

ルールまたはそのターゲットを変更すると、受信イベントはすぐに、新しい、またはか更新されたルールへのマッチングを開始/停止しないことがあります。変更が有効になるまで、しばらくお待ちください。

しばらくしてもイベントが一致しない場合は、ルールの CloudWatch メトリクス TriggeredRulesInvocationsFailedInvocations を確認します。これらのメトリクスの詳細については、Amazon EventBridge のモニタリングを参照してください。

ルールが AWS サービスのイベントと一致することを意図している場合は、次のいずれかを実行します。

  • TestEventPattern アクションを使用して、ルールのイベントパターンがテストイベントに一致するかどうかをテストします。詳細については、『Amazon EventBridge API リファレンス』の「TestEventPattern」を参照してください。

  • EventBridge コンソールサンドボックスを使用します。

ルールが、ScheduleExpression で指定した時間に実行されませんでした

ルールのスケジュールが、UTC+0 タイムゾーンで設定されていることを確認します。ScheduleExpression が正しい場合は、「ルールを作成または修正したが、テストイベントと一致しない」の手順に従います。

良きした時刻にルールが実行されなかった

EventBridge は、設定した開始時間から 1 分以内にルールを実行します。実行時間へのカウントダウンは、ルールを作成するとすぐに開始されます。

注記

スケジュールされたルールは、配信タイプが guaranteed で、予定された時間ごとに少なくとも一度はイベントがトリガーされることを意味します。

cron 式を使用して、指定した時間にターゲットを起動できます。4 時間ごとの 0 分に実行するルールを作成するには、次のいずれかを実行します。

  • EventBridge コンソールで、cron 式 0 0/4 * * ? * を使用します。

  • を使用して AWS CLI、式 を使用しますcron(0 0/4 * * ? *)

たとえば、 を使用して 4 時間ごとに実行される という名前TestRuleのルールを作成するには AWS CLI、次のコマンドを使用します。

aws events put-rule --name TestRule --schedule-expression 'cron(0 0/4 * * ? *)'

5 分ごとにルールを実行するには、次の cron 式を使用します。

aws events put-rule --name TestRule --schedule-expression 'cron(0/5 * * * ? *)'

cron式を使用する EventBridge の最小の分解単位は、1 分です。スケジュールされたルールは、その分のうちに実行されますが、正確に 0 秒に実行されるわけではありません。

EventBridge とターゲットサービスは分散しているため、スケジュールしたルールが実行されてからターゲットサービスがターゲットリソースでアクションを実行するまでの間に数秒の遅延が発生することもあります。

ルールが AWS グローバルサービス API コールと一致しているが、実行されなかった

AWS IAM や Amazon Route 53 などの グローバルサービスは、米国東部 (バージニア北部) リージョンでのみ利用できるため、グローバルサービスからの AWS API コールからのイベントはそのリージョンでのみ利用できます。詳細については、「AWS サービスからのイベント」を参照してください。

ルールが実行されるとき、ルールに関連付けられた IAM ロールが無視されます

EventBridge は、Kinesis ストリームにイベントを送信するルールにのみ IAM ロールを使用します。Lambda 関数と Amazon SNS トピックを呼び出すルールの場合、リソースベースのアクセス許可を付与する必要があります。

指定した IAM ロールを引き受けるときに EventBridge がそれらを使用できるように、リージョン AWS STS エンドポイントが有効になっていることを確認します。詳細については、「IAM ユーザーガイド」の「 AWS リージョン AWS STS での のアクティブ化と非アクティブ化」を参照してください。

ルールにはリソースに一致することを条件とするイベントパターンがありますが、一致するイベントがありません

のほとんどのサービスは、Amazon リソースネーム (ARN) でコロン (:) またはスラッシュ (/) を同じ文字として AWS 扱います。ただし、EventBridge はイベントパターンルールで完全一致を使用します。 ARNs イベントパターンの作成時に正しい ARN 文字を使用して、一致させるイベント内の ARN 構文とそれらの文字が一致するようにしてください。

CloudTrail からの AWS API コールイベントなど、一部のイベントでは、リソースフィールドに何も表示されません。

ターゲットへのイベントの配信で遅延が発生する

ターゲットリソースが制約されているシナリオを除き、Eventbridge は、最大 24 時間にわたりターゲットイベントを配信しようとします。最初の試行は、イベントがイベントストリームに到達するとすぐに行われます。ただし、ターゲットサービスに問題がある場合、Eventbridge は自動的に別の配信を再スケジュールします。イベントの到着から 24 時間が経過すると、EventBridge はイベントの配信の試行を停止し、CloudWatch で FailedInvocations メトリクスを発行します。ターゲットに正常に配信できなかったイベントを保存するように DLQ を設定することをお勧めします。詳細については、「EventBridge で配信されていないイベントを処理するためのデッドレターキューの使用」を参照してください。

一部のイベントがターゲットに配信されない

EventBridge ルールターゲットが長時間制約されている場合、EventBridge は配信を再試行しないことがあります。例えば、ターゲットが受信イベントのトラフィックを処理するようにプロビジョニングされておらず、ターゲットサービスがユーザーにかわって行うリクエストをスロットリングしている場合、Eventbridge は配信を再試行しない可能性があります。

1 つのイベントに応じてルールが複数回トリガーされた

まれに、単一のイベントまたはスケジュールされた期間に対して同じルールが複数回実行されたり、トリガーされる特定のルールに対して同じターゲットを複数回呼び出されたりする場合があります。

無限ループの防止

Eventbridge では、ルールが繰り返し実行される無限ループにつながるルールが作成されることがあります。無限ループに陥るルールがある場合は、そのルールが実行するアクションが同じルールに一致しないように書き換えてください。

例えば、Amazon S3 バケットで ACL が変更されたことを検出してから、ソフトウェアを実行してそれを新しい状態に変更するルールは、無限ループの原因となります。これを解決する 1 つの方法は、不正な状態の ACL のみに一致するようにルールを書き換えることです。

無限ループにより、予想よりも高い料金がすぐに発生する可能性があります。指定した制限を料金が超えるとアラートで知らせる予算設定を使用することをお勧めします。詳細については、「予算によるコストの管理」を参照してください。

マイイベントがターゲットの Amazon SQS キューに配信されない

Amazon SQS キューが暗号化されている場合は、顧客管理 KMS キーを作成し、KMS キーポリシーに次の許可セクションを含める必要があります。詳細については、AWS KMS 「アクセス許可の設定」を参照してください。

{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }

ルールは実行されるが、Amazon SNS トピックにいずれのメッセージもパブリッシュされない

シナリオ 1

Amazon SNS トピックにメッセージを発行するには、アクセス許可が必要です。を使用して次のコマンドを使用し AWS CLI、us-east-1 をリージョンに置き換え、トピック ARN を使用します。

aws sns get-topic-attributes --region us-east-1 --topic-arn "arn:aws:sns:us-east-1:123456789012:MyTopic"

正しいアクセス許可を取得するには、ポリシーが次のようになります。

"{\"Version\":\"2012-10-17\", \"Id\":\"__default_policy_ID\", \"Statement\":[{\"Sid\":\"__default_statement_ID\", \"Effect\":\"Allow\", \"Principal\":{\"AWS\":\"*\"}, \"Action\":[\"SNS:Subscribe\", \"SNS:ListSubscriptionsByTopic\", \"SNS:DeleteTopic\", \"SNS:GetTopicAttributes\", \"SNS:Publish\", \"SNS:RemovePermission\", \"SNS:AddPermission\", \"SNS:SetTopicAttributes\"], \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\", \"Condition\":{\"StringEquals\":{\"AWS:SourceOwner\":\"123456789012\"}}},{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\", \"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}]}"

Publish アクセス許可のある events.amazonaws.com が表示されていない場合は、まず現在のポリシーをコピーして、以下のステートメントを追加してください。

{\"Sid\":\"Allow_Publish_Events\", \"Effect\":\"Allow\",\"Principal\":{\"Service\":\"events.amazonaws.com\"}, \"Action\":\"sns:Publish\", \"Resource\":\"arn:aws:sns:us-east-1:123456789012:MyTopic\"}

次に、 を使用してトピック属性を設定し AWS CLI、次のコマンドを使用します。

aws sns set-topic-attributes --region us-east-1 --topic-arn "arn:aws:sns:us-east-1:123456789012:MyTopic" --attribute-name Policy --attribute-value NEW_POLICY_STRING
注記

ポリシーが正しくない場合は、そのポリシーを削除してからルールに追加し直すことで、Eventbridge コンソールでルールを編集することもできます。Eventbridge は、ターゲットで適切なアクセス許可を設定します。

シナリオ 2

SNS トピックが暗号化されている場合は、KMS キーポリシーに次のセクションを含める必要があります。

{ "Sid": "Allow EventBridge to use the key", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey" ], "Resource": "*" }

Amazon SNS トピックに関連付けられたルールを削除した後でも、Amazon SNS トピックに Eventbridge のアクセス許可がある

ターゲットとして Amazon SNS でルールを作成すると、Eventbridge はユーザーにかわって Amazon SNS トピックにアクセス許可を追加します。作成後すぐにルールを削除すると、Eventbridge は Amazon SNS トピックからアクセス許可を削除できなくなる場合があります。その場合は、aws sns set-topic-attributes コマンドを使用してトピックからアクセス許可を削除できます。イベントを送信するためのリソースベースのアクセス権限については、「Amazon EventBridge のリソースベースのポリシーを使用する」を参照してください。

Eventbridge で使用できる IAM 条件キー

EventBridge は、 AWS全体の条件キー (IAM ユーザーガイドの「IAM および AWS STS 条件コンテキストキー」を参照) と、 にリストされているキーをサポートしていますAmazon EventBridge での IAM ポリシー条件の使用

Eventbridge ルールが壊れているときに通知するアラームを作成する方法

以下のアラームを使用して、Eventbridge ルールが壊れているときに通知されるようにできます。

ルールが壊れているときに警告するアラームを作成するには
  1. CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/) を開きます。

  2. アラームの作成(アラームの作成) を選択します。[CloudWatch Metrics by Category] ペインで [Events Metrics] を選択します。

  3. メトリクスのリストで、[FailedInvocations] を選択します。

  4. グラフの上で、[Statistic]、[Sum] を選択します。

  5. [Period] で、値 (例: 5 分) を選択します。[Next (次へ)] を選択します。

  6. [Alarm Threshold] の下の [Name] に一意のアラーム名 (例: myFailedRules) を入力します。[Description] (説明) に、アラームの説明として、例えば「Rules are not delivering events to targets」と入力します。

  7. [is] で [>=] および [1] を選択します。[for] に「10」と入力します。

  8. [アクション] の [アラームが次の時:] で、[状態: 警告] を選択します。

  9. [Send notification to (通知の送信先)] で、既存の Amazon SNS トピックを選択するか、新しいトピックを作成します。新しいトピックを作成するには、[新しいリスト] を選択します。新しい Amazon SNS トピックの名前 (例: myFailedRules) を入力します。

  10. [Email list] に、アラームが ALARM 状態に変わったら通知する E メールアドレスを、カンマ区切りのリストに入力します。

  11. アラームの作成(アラームの作成) を選択します。

このページの内容

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.