Sco*_*all 15
今天我遇到了类似的情况,我需要在文件已经在S3之后重新触发Lamda函数.我的一位同事想出了以下哪些对我们有用:
执行类似的事情:
aws lambda invoke
--function-name <lambda function name>
--payload '{
"Records":[{
"s3":{
"bucket":{
"name":"<bucket name>"
},
"object":{
"key": "<key name>"
}
}
}]
}' outfile
Run Code Online (Sandbox Code Playgroud)如果不再次上传文件,则无法再次启用S3事件触发器.但是,对于失败的处理事件,如果您使用Lambda,它将根据常见问题解答自动重试3次:
对于Amazon S3存储桶通知和自定义事件,如果代码中出现错误情况或超出服务或资源限制,AWS Lambda将尝试三次执行您的函数.
如果您的处理失败并且您想要更多地控制重试,则可以使用SQS来接收S3事件.这样,您的应用程序就能够从队列中读取消息,如果处理失败/死亡,最终将达到可见性超时,并且可以再次处理SQS消息.这样,您可以无限期地重试,并控制连续重试之间的可见性超时时间.
如果您正在使用Lambda并希望组合使用SQS,则仍可以通过将Lambda函数安排为每5分钟运行一次并让Lambda函数从队列中读取消息来实现.将此与Lambda函数运行时的5分钟限制相结合,您几乎可以连续消耗SQS队列中的消息.
这里没有提到的一种方法是,您可以“触摸”S3 对象的元数据,它将触发一个事件。这样您就可以获取事件消息,而无需修改或摆弄原始对象数据。
注意:元数据字段中的数据不必更改即可触发事件。
这里有一些策略:
归档时间: |
|
查看次数: |
5450 次 |
最近记录: |