将文件上传到 s3 时未触发 s3 createObject 事件

s3 createObject event not being triggered when a file is uploaded to s3

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

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

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

有什么提示吗?

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

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

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

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