Events 触发S3创建事件
我使用S3创建事件来触发AWS Lambdas。如果我的处理失败,我想做一些魔术,然后再次触发“事件”,开始我的处理。到目前为止,我看到的唯一方法是重新上传文件 我可以在不重新上传文件的情况下“再次”触发事件吗Events 触发S3创建事件,events,amazon-s3,Events,Amazon S3,我使用S3创建事件来触发AWS Lambdas。如果我的处理失败,我想做一些魔术,然后再次触发“事件”,开始我的处理。到目前为止,我看到的唯一方法是重新上传文件 我可以在不重新上传文件的情况下“再次”触发事件吗 我使用Python和boto3。如果不再次上传文件,就不可能再次触发S3事件。但是,对于处理失败的事件,如果您正在使用Lambda,则将根据以下步骤自动重试3次: 对于AmazonS3 bucket通知和自定义事件,AWS Lambda将 在发生故障时,尝试执行函数三次 代码中的错误条件
我使用Python和boto3。如果不再次上传文件,就不可能再次触发S3事件。但是,对于处理失败的事件,如果您正在使用Lambda,则将根据以下步骤自动重试3次: 对于AmazonS3 bucket通知和自定义事件,AWS Lambda将 在发生故障时,尝试执行函数三次 代码中的错误条件或超出服务或资源 限制 如果您的处理失败,并且希望对重试有更多的控制,那么可以使用SQS来接收S3事件。这样,您的应用程序就能够从队列中读取消息,如果处理失败/终止,最终将达到可见性超时,并且可以再次处理SQS消息。这样,您可以无限期地重试,还可以控制连续重试之间的可见性超时时间
如果您正在使用Lambda并希望结合使用SQS,那么仍然可以通过安排Lambda函数每5分钟运行一次,并让Lambda函数从队列中读取消息来实现这一点。结合Lambda函数运行时间的5分钟限制,您几乎可以连续使用SQS队列中的消息。我今天遇到了类似的情况,在文件已经在S3中之后,我需要重新触发Lamda函数。我的一位同事提出了以下对我们有用的建议:
aws lambda invoke
--function-name <lambda function name>
--payload '{
"Records":[{
"s3":{
"bucket":{
"name":"<bucket name>"
},
"object":{
"key": "<key name>"
}
}
}]
}' outfile
aws lambda调用
--函数名
--有效载荷'{
“记录”:[{
“s3”:{
“桶”:{
“名称”:”
},
“对象”:{
“密钥”:”
}
}
}]
}“外文文件
这里没有提到的一种方法是,您可以“触摸”S3对象的元数据,它将触发一个事件。通过这种方式,您可以获得事件消息,而无需修改或篡改原始对象数据 注意:元数据字段中的数据不必更改即可触发事件 以下是一些策略:
- 使用可用于触发事件的公共元数据标记
- 首先获取元数据字典,然后使用相同的数据将其发回