【问题标题】:s3 createObject event not being triggered when a file is uploaded to s3将文件上传到 s3 时未触发 s3 createObject 事件
【发布时间】:2019-04-28 03:05:11
【问题描述】:

我正在使用 aws serverless 创建一个函数,该函数在新文件上传到 s3 存储桶时调用。我是这样订阅的。 然而,为了测试它,我从亚马逊控制台手动上传了文件,我希望该函数能够被执行,但检查 CloudWatch 日志,似乎没有任何执行。

如果我手动运行 lambda 函数,一切正常,并且我在 Cloudwatch 中看到了日志,但是是事件触发了失败的原因。

仅供参考:存储桶是在单独的云形成堆栈中的函数之前创建的。所以bucket和function不是同时创建的。

有什么提示吗?

register:
    handler: lib/register.handler
    memory: 256
    events:
      - s3:
        bucket: ${self:custom.myBucketArn}
        event: s3:ObjectCreated:*

【问题讨论】:

  • 出于兴趣,您是否部署无服务器功能之前创建了存储桶?
  • 是的,我做到了。你认为这可能与此有关吗?我会感到惊讶。因为存储桶是在单独的云形成堆栈中创建的。这应该是可能的,而不必同时创建存储桶和函数。

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


【解决方案1】:

我有点惊讶它能够部署,因为(除非它最近得到解决)CloudFormation 有一个限制,它只能作用于自己的资源,这意味着无服务器无法将触发器附加到不是由该模板创建的存储桶.

幸运的是,这种限制经常遇到,以至于人们编写了无服务器框架插件来解决它。我建议您使用此插件在现有存储桶上触发 lambda:

https://github.com/matt-filion/serverless-external-s3-event

【讨论】:

  • 感谢有用的解释
猜你喜欢
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
  • 2021-03-25
  • 1970-01-01
  • 2011-12-20
  • 2021-10-28
  • 1970-01-01
相关资源
最近更新 更多