2016-11-02 11 views
3

現在、電子メールの添付ファイルを.emlファイルとは別に保存しています。バケットに着信電子メールを配信するSESルールセットがあります。バケットが電子メールを取得すると、S3 Put Lambda関数は生の電子メール(MIME形式)を解析し、base64は添付ファイルバッファを解読し、添付ファイルごとにputObjectを実行し、元の.emlファイルを新しいバケットに渡します。Lambda S3 Put関数が大きなファイルに対してトリガしない

私の問題は、このラムダ機能は添付ファイルが〜3〜4M​​Bを超える電子メールに対してはトリガーしないということです。電子メールは受信され、最初のバケットに格納されますが、受信時に機能は起動しません。また、このイベントはCloudWatchには表示されません。ただし、ハードコードされたS3 Putペイロードを使用して手動でテストする場合、および割り当てられたバケットに.emlファイルを手動でアップロードする場合は、この機能は完全に正常に機能します。

この制限がある理由はありますか?おそらくこれはバケットの権限の問題か、割り当てられたラムダの役割に関する問題かもしれません。手動でテストしたところ、これは決してタイムアウトではなく、使用された最大メモリ使用量の問題ではないことがわかりました。

+0

[S3通知がSQSに失敗する可能性はありますか?](http://stackoverflow.com/q/30044185/1695906)表面上は正確には同じではありませんが、根底にある可能性のある同じ原因は、現時点では正確な重複ではないと言います。私は偶然にも私の黄金律のハンマーを叩くのではなく、そのことについていくつかの合意を見たいと思っています。 –

+0

@ Michael-sqlbot私は、この問題を探している間誰かが他の質問を見つけることを期待したことがないので、私はこの質問に重複していません。他の質問のタイトルは、この問題が発生したときに見つけにくいものです。 –

+0

ありがとう@ MarkB。私はあなたが正しいと思う。 –

答えて

8

普通のPut操作ではなく、S3 Multipart Uploadを使用して大きなファイルをほぼ確実にアップロードしています。 Lambdaサブスクリプションを設定して、Multipartのアップロードを通知する必要があります。現在のところ、この機能は現在s3:ObjectCreated:Putのイベントにのみ登録されており、設定にs3:ObjectCreated:CompleteMultipartUploadを追加する必要があります。

1

私は同じ問題に直面しました。あなたがS3にアップロードしたファイルのEtagが、ハイフンと数字の後にMultipartを使用してアップロードされたことを示していれば、 CompleteMultipartUploadイベントを購読すると問題が解決しました。

関連する問題