通过AWS S3 / Lambda Trigger传递有效负载

时间:2017-09-26 18:41:27

标签: amazon-web-services amazon-s3 aws-lambda

我是AWS平台的新手。我通过AWS CLI调用了lambda函数。

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

这里,Payload是一个json文件

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

这个json文件在我的lambda处理程序中用作事件对象的一部分。

上传S3文件时是否可以配置此行为并自动触发Lambda函数?

例如,

我在S3_bucket中上传一个文件,该文件将触发上面显示的json有效负载的lambda函数。

2 个答案:

答案 0 :(得分:4)

不,你不能。

由S3上传触发的Lambda函数提供有关新对象的信息(区域,存储桶,密钥,版本ID,如果存储桶已版本化),但不提供对象有效负载。

请参阅记录的S3 Event Message Structure。这就是S3调用的Lambda函数将接收的内容。

因此,S3事件调用的Lambda函数必须从S3获取对象才能访问有效负载。

因此,您需要修改现有的lambda函数,或者您需要一个新的lambda函数来响应事件,获取有效负载,然后调用原始函数。

另请注意,如果这些事件是由现有对象的覆盖触发的,那么您将需要在您的存储桶上启用版本控制,并且您将希望使用GetObjectVersion在事件中使用显式versionId获取有效负载,因为GetObject(不带)指定版本)可能会返回覆盖的陈旧数据。

答案 1 :(得分:3)

是的,你可以。 S3是Lambda触发器之一。请阅读更多详情here