2017-09-26 15 views
0

AWSプラットフォームを初めて使用しています。私はAWS CLIを介してラムダ関数を呼び出しました。ここで AWS S3/Lambda Triggerによるペイロードの受け渡し

aws lambda invoke --function-name CFT ... --payload file://${DATA_TMP}/affl_ftp_config.json ${DATA_LOG}/outfile.txt 

は、ペイロードは、このJSONファイルは、私のラムダハンドラ内のイベントオブジェクトの一部として使用されているJSONファイル

{ 
    "s3_bucket": "fanatics.dev.internal.confidential", 
    .... 
    "date": "20160813" 
} 

です。

S3ファイルがアップロードされ、自動的にラムダ機能を起動するときに、この動作を設定することはできますか?例えば、

について

Iは、上記のJSONペイロードとラムダ関数をトリガーするS3_bucketにファイルをアップロードします。

答えて

4

いいえ、できません。

S3アップロードによってトリガされるラムダ関数は、新しいオブジェクト(バケットがバージョン管理されている場合は領域、バケット、キー、バージョンID)に関する情報を提供しますが、オブジェクトペイロードは提供しません。

文書番号S3 Event Message Structureを参照してください。これは、S3によって呼び出されるラムダ関数が受け取るものです。

したがって、S3イベントによって呼び出されたLambda関数は、ペイロードにアクセスするためにS3からオブジェクトをフェッチする必要があります。

したがって、既存のラムダ関数を変更する必要があります。または、イベントに応答してペイロードをフェッチし、元の関数を呼び出すために新しいラムダ関数が必要になります。

これらのイベントが既存のオブジェクトの上書きによってトリガーされる場合は、バケットでバージョン管理が有効になり、GetObjectVersionを使用してイベントの明示的なversionIdでペイロードをフェッチする必要があることにも注意してください。バージョンを指定せずに)上書きすると古いデータが返されることがあります。

3

はいできます。 S3はラムダトリガの1つです。詳細をお読みくださいhere

+1

軽微なコメント:Lambda関数をトリガするイベントには、S3オブジェクトのボディをペイロードとして含めるのではなく、イベントをトリガしたS3オブジェクトへの参照が含まれますが、オブジェクトの内容を取得するのは簡単です(https ://stackoverflow.com/questions/30651502/how-to-get-contents-of-a-text-file-from-aws-s3-using-a-lambda-function/30655755#30655755)。 – jarmod

関連する問題