我正在使用aws serverless创建一个函数,每当一个新文件上传到s3存储桶时,该函数就会被调用。我这样订阅。 但是,为了进行测试,我从亚马逊控制台手动上传了文件,我希望该功能可以执行,但是检查CloudWatch日志后,似乎什么都没有执行。
如果我手动运行lambda函数,一切正常,并且我在Cloudwatch中看到了日志,但是该事件触发了失败的事件。
仅供参考:创建存储桶的功能要比在单独的云形成堆栈中的功能先创建。因此,存储桶和功能不能同时创建。
有任何提示吗?
register:
handler: lib/register.handler
memory: 256
events:
- s3:
bucket: ${self:custom.myBucketArn}
event: s3:ObjectCreated:*
答案 0 :(得分:2)
我对这种成功部署感到惊讶,因为(除非最近得到解决)CloudFormation有一个局限性,即它只能根据自己的资源运行,这意味着Serverless无法将触发器附加到该模板未创建的存储桶上
幸运的是,经常遇到这种限制,以至于人们编写了无服务器框架插件来解决该问题。我建议您使用此插件在现有存储桶上触发lambda: