Lambda 関数が EventBridge ルールによってトリガーされなかったのはなぜですか?

最終更新日: 2021 年 12 月 3 日

AWS Command Line Interface (AWS CLI)、API、または AWS CloudFormation を使用して、Amazon EventBridge ルールを作成しました。しかし、ターゲットの AWS Lambda 関数が呼び出されません。AWS マネジメントコンソールで同じ EventBridge ルールを作成または更新すると、ルールは正しく機能します。これをトラブルシューティングするにはどうすればよいですか?

簡単な説明

EventBridge コンソールを使用して Lambda 関数をターゲットとして EventBridge ルールを作成すると、関数のリソースポリシーに適切な許可が自動的に追加されます。ただし、AWS CLI、SDK、または AWS CloudFormation を使用して同じルールを作成した場合は、リソースポリシーで許可を手動で適用する必要があります。この許可により、Lambda 関数を呼び出すためのアクセス権限が Amazon EventBridge サービスに付与されます。

解決方法

注: AWS Command Line Interface (AWS CLI) コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください

EventBridge ルールの CloudWatch メトリクスを確認する

  1. CloudWatch コンソールを開きます。
  2. [All Metrics] (すべてのメトリクス) を選択します。
  3. [AWS/Events] (AWS/イベント) 名前空間を選択します。
  4. 確認しているルールの Invocations メトリクスと FailedInvocations メトリクスを選択します。

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

Lambda 関数のリソースポリシーで適切な許可を確認する

  1. AWS Lambda コンソールを開きます。
  2. ターゲット関数を選択します。
  3. [Configuration] (構成) タブを選択し、[Permissions] (許可) を選択します。
  4. [Resource-based policy] (リソースベースのポリシー) のセクションで、ポリシードキュメントを確認します。

EventBridge が Lambda 関数を呼び出すことを許可するリソースポリシーの例を次に示します。

{
  "Effect": "Allow",
  "Action": "lambda:InvokeFunction",
  "Resource": "arn:aws:lambda:region:account-id:function:function-name",
  "Principal": {
    "Service": "events.amazonaws.com"
  },
  "Condition": {
    "ArnLike": {
      "AWS:SourceArn": "arn:aws:events:region:account-id:rule/rule-name"
    }
  },
  "Sid": "InvokeLambdaFunction"
}

注: デプロイする前に、ARN を適切なリージョン、アカウント ID、およびリソース名に置き換えてください。

また、GetPolicy API を使用して Lambda 関数のリソースポリシーを取得することもできます。

既存のリソースポリシーに必要な許可が含まれていない場合は、前述の手順を参考にしてポリシーを更新します。AWS CLI で AddPermission コマンドを使用してポリシーを更新することもできます。AddPermission コマンドの例を次に示します。

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