Lambda の Amazon SQS トリガーが無効になったのはなぜですか?

所要時間1分
0

Amazon Simple Queue Service (Amazon SQS) キュー内のメッセージを処理するように AWS Lambda 関数を設定しましたが、SQS トリガーがアクティブになっていません。

簡単な説明

Lambda 関数を使用して Amazon SQS キュー内のメッセージを処理できます。イベントソースマッピングは、イベントソースから読み込んで Lambda 関数を呼び出します。イベントソースマッピングの状態は、[作成中]、[有効化中]、[有効]、[無効化中]、[無効]、[更新中]、[削除中]のいずれかです。

Lambda ポーラーは、常に Amazon SQS キューに対して [ReceiveMessage API] アクション呼び出しを行っています。[ReceiveMessage] API 呼び出しが完了しない場合、EventSourceMapping リソースは無効になります。

解決策

Lambda 関数権限

Lambda 関数実行ロールが以下の権限にアクセスできることを確認してください。

AWS Key Management Service (AWS KMS) のアクセス許可

Amazon SQS キューが SSE-KMS 暗号化で設定されている場合は、次のことを確認してください。

  • AWS KMS キーが存在する。
  • Lambda 関数実行ロールに、EncryptDecryptGenerateDataKeyの権限がある。
  • AWS KMS キーポリシーのアクセス権限は、イベントを Amazon SQS キューに送信できるように設定されている。

**注:**SSE-KMS 暗号化を使用する Amazon SQS キューは、別の AWS アカウントの Lambda 関数を呼び出すことはできません (クロスアカウント)。

CloudTrail イベント履歴

AWS CloudTrail を使用してイベントを検索できます。CloudTrail は、AWS アカウントでデフォルトで有効になっています。

AWS アカウントのイベントの継続的な記録については、トレイルを作成してください。CloudTrail はトレイルを使用して、アカウントで行われた API 呼び出しのログを作成します。これらのログは、指定した Amazon Simple Storage Service (Amazon S3) バケットに配信されます。トレイルを設定しない場合でも、CloudTrail コンソールのイベント履歴で最新のイベントを表示できます。

1.    CloudTrail コンソールを開きます。

2.    ナビゲーションペインで、[イベント履歴] を選択します。

3.    ユースケースに合わせて CloudTrail イベントの表示、ディスプレイ、フィルタリングに関する指示に従ってください。

記録されたイベント履歴をCSV または JSON 形式のファイルとしてダウンロードすることもできます

CloudTrail イベント名が [LambdaESMDisabled] になっていることを確認してください。イベントログには、Amazon SQS トリガーがアクティブでない原因に関する詳細情報を含む [EsmDisableReason] パラメーターが含まれています。

詳細については、「CloudTrail による Lambda API 呼び出しのロギング」を参照してください。

Amazon CloudWatch アラーム (オプション)

Amazon SQS メトリックスの CloudWatch アラームを作成して、受信、送信、削除されたメッセージの数などの通知を受け取ることができます。たとえば、Amazon SQS メトリクス NumberOfMessagesReceived を使用して、最近返されたメッセージの数を取得できます。カウントが 0 の場合は、新しい Lambda 関数を呼び出して Amazon SQS トリガーのステータスを確認します。Amazon SQS トリガーがまだ無効になっている場合は、新しい Lambda 関数を使用してトリガーを有効にします。

詳細については、Amazon SQS で利用可能な CloudWatch メトリックスを参照してください。

関連情報

Amazon SQS キューにアクセスするにはどのような権限が必要ですか?

Lambda 関数の障害をトラブルシューティングする方法を教えてください。

AWS公式
AWS公式更新しました 1年前
コメントはありません