Amazon S3 イベント通知が Lambda 関数を呼び出さないのはなぜですか?

所要時間2分
0

AWS Lambda 関数を呼び出すように Amazon Simple Storage Service (Amazon S3) のイベント通知を構成しました。しかし、Amazon S3 イベントが発生しても、この関数が呼び出されません。

解決方法

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

Amazon S3 イベントタイプが正しく設定されていることを確認する

Amazon S3 イベント通知を構成する場合、Amazon S3 による通知の送信をトリガーするサポート対象の Amazon S3 イベントタイプを指定する必要があります。指定しなかったイベントタイプが S3 バケットで発生しても、Amazon S3 は通知を送信しません。

例えば、Amazon S3 イベント通知は、s3:ObjectCreated:Put イベントで Lambda を呼び出すように構成されています。サイズの大きいファイルをアップロードする場合、ファイルはマルチパートアップロードを使用してアップロードされます。s3:ObjectCreated:CompleteMultipartUpload イベントは s3:ObjectCreated:Put イベントと一緒に選択する必要があります。s3:ObjectCreated:* イベントタイプを使用して、オブジェクトの作成に使用された任意の API の通知をリクエストすることもできます。

オブジェクトキー名フィルターにアップロードしたファイル名が含まれていることを確認する

イベント通知がオブジェクトキー名のフィルタリングを使用するように構成されている場合、通知は特定のプレフィックスまたはサフィックスを持つオブジェクトにしか送信されません。ワイルドカード文字 (「*」) は、フィルターで任意の文字を表すプレフィックスまたはサフィックスとして使用することはできません。イベント通知で指定されたプレフィックスまたはサフィックスのフィルターに、アップロードされたオブジェクトキー名が含まれていることを確認してください。

オブジェクトキー名のフィルターが URL エンコード (パーセントエンコード) 形式であることを確認する

イベント通知がオブジェクトキー名のフィルタリングを使用するように構成されている場合、通知は特定のプレフィックスまたはサフィックスを持つオブジェクトにしか送信されません。

プレフィックスまたはサフィックスに次の特殊文字のいずれかを使用する場合は、それらを URL エンコード (パーセントエンコード) 形式で入力する必要があります。

  • 丸かっこ (「( )」)
  • 16 進数の 00~1F (10 進数の 0~31) および 7F (10 進数の 127) の ASCII 文字範囲
  • ドル記号 (「$」)
  • アンパサンド (「&」)
  • プラス記号 (「+」)
  • カンマ (「,」)
  • コロン (「:」)
  • セミコロン (「;」)
  • 等号 (「=」)
  • 疑問符 (「?」)
  • アットマーク (「@」)
  • スペース (「 」)

例えば、プレフィックスの値を「test=abc/」として定義するには、その値に「test%3Dabc/」と入力します。

注: ワイルドカード文字 (「*」) は、フィルターで任意の文字を表すプレフィックスまたはサフィックスとして使用することはできません。

詳細については、「Object key naming guidelines」(オブジェクトキーの命名に関するガイドライン) を参照してください。

Lambda 関数の AWS Identity and Access Management (IAM) ポリシーに必要な許可が与えられていることを確認する

Lambda 関数のリソースベースのポリシーをチェックして、Amazon S3 バケットが関数を呼び出すことを許可していることを確認します。存在しない場合は、「AWS のサービスへのアクセス権を関数に付与する」の手順に従って、必要な許可を追加します。

詳細については、「AWS Lambda 許可」を参照してください。

注: Amazon S3 コンソールを使用して新しいイベント通知を追加すると、必要な許可が自動的に関数のポリシーに追加されます。AWS CLI で put-bucket-notification-configuration アクションを使用してイベント通知を追加した場合、関数のポリシーは自動的には更新されません。

Amazon S3 イベント通知からの同時呼び出しを処理するように Lambda 関数が構成されていることを確認する

Amazon S3 イベント通知からの同時呼び出しを処理するように Lambda 関数を構成する必要があります。関数がスケーリングできるよりも速く呼び出しリクエストが届いた場合、または関数の同時実行数が最大である場合、Lambda はこれらのリクエストをスロットリングします。

詳細については、「Asynchronous invocation」(非同期呼び出し) および「Lambda function scaling」(Lambda 関数スケーリング) を参照してください。


関連情報

Systems Manager Automation を使用して Simple Storage Service (Amazon S3) イベント通知で Lambda 関数を呼び出す際の問題をトラブルシューティングするにはどうすればよいですか?

Amazon S3 イベントでの AWS Lambda の使用

演習: 通知 (SNS トピックまたは SQS キュー) のバケットを構成する

チュートリアル: Amazon S3 トリガーを使用して Lambda 関数を呼び出す

Lambda 関数を呼び出す Amazon S3 イベント通知を作成するときに「Unable to validate the following destination configurations」(以下の送信先設定を検証できません) というエラーが表示されるのはなぜですか?

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