在S3中对象创建的AWS Lambda函数触发器不起作用

时间:2017-05-23 10:59:14

标签: amazon-s3 aws-lambda

我正在上传这样的内容:

  

curl -v -X PUT -T" test.xml" -H"主持人:my-bucket-upload.s3-eu-central-1.amazonaws.com" -H"内容类型:application / xml" https://my-bucket-upload.s3-eu-central-1.amazonaws.com/test.xml

文件上传,我可以在我的S3存储桶中看到它。

诀窍是,当我尝试创建一个在创建时触发的lambda函数时,它永远不会被调用。如果我使用S3 Web界面上传文件,它可以正常工作。我究竟做错了什么?有没有明确的方法如何做到这一点?

2 个答案:

答案 0 :(得分:1)

  

Amazon S3 API(如PUT,POST和COPY)可以创建对象。运用   这些事件类型,您可以在对象时启用通知   使用特定的API创建,或者您可以使用s3:ObjectCreated:*   无论使用何种API,都会请求通知的事件类型   创建一个对象。

  • 检查存储桶上的通知事件设置
  • 转到AWS管理控制台上的存储桶
  • 单击存储桶上的属性选项卡
  • 单击“事件”以检查通知事件设置

案例1:

  • s3:ObjectCreated:* - 无论PUT,POST或COPY如何都应调用Lambda

其他情况: -

  • 如果为特定HTTP方法设置了事件,请使用该方法 您的CURL命令在S3存储桶上创建对象。这样吧 应该触发Lambda函数

答案 1 :(得分:0)

检查存储桶/属性中的前缀。 如果存在像foo/这样的世界,则意味着只有foo文件夹中的对象才会触发外翻到lambda。