Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services AWS如何重新安排S3 lambda活动?_Amazon Web Services_Amazon S3_Aws Lambda - Fatal编程技术网

Amazon web services AWS如何重新安排S3 lambda活动?

Amazon web services AWS如何重新安排S3 lambda活动?,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,我有一个lambda,它在S3中创建对象时运行,在某些情况下,我需要重新安排这个lambda,比如说15分钟后 当我的lambda第二次运行时,我需要有相同的事件参数,我不介意除了bucket和path之外的其他字段。 event.Records[0].s3.bucket.nameevent.Records[0].s3.object.key。但很容易发生相同的事件 我的替代方案是将数据保存在dynamo中,并使用另一个lambda,每15分钟读取一次数据(糟糕透顶) 但是,重新安排当前函数并将相

我有一个lambda,它在S3中创建对象时运行,在某些情况下,我需要重新安排这个lambda,比如说15分钟后

当我的lambda第二次运行时,我需要有相同的事件参数,我不介意除了bucket和path之外的其他字段。
event.Records[0].s3.bucket.name
event.Records[0].s3.object.key
。但很容易发生相同的
事件

我的替代方案是将数据保存在dynamo中,并使用另一个lambda,每15分钟读取一次数据(糟糕透顶)

但是,重新安排当前函数并将相同的参数传递给它会更好。 大概是这样的:

exports.handler = (event, context, callback) => {
   if(xyz)
      reschedule(15 * 1000 * 60, 'ThisLambdaName', event, context); 
}
类似于setTimeout,但是没有AWS为这15分钟向我收费。你可以使用DynamoDB,DynamoDB Streams和AWS Lambda

将数据保存在DynamoDB中,并将TTL设置为15分钟后

当一个项目到达TTL时,它将创建一个DynamoDB流,然后您可以使用该流使用原始数据再次触发原始函数。您很可能需要在处理程序中进行一些更改,以不同的方式处理来自S3和DynamoDB流的事件

参考资料:

您可以将DynamoDB与、DynamoDB Streams和AWS Lambda一起使用

将数据保存在DynamoDB中,并将TTL设置为15分钟后

当一个项目到达TTL时,它将创建一个DynamoDB流,然后您可以使用该流使用原始数据再次触发原始函数。您很可能需要在处理程序中进行一些更改,以不同的方式处理来自S3和DynamoDB流的事件

参考资料:


    • 这是一个老问题,但目前唯一的答案是误导。将DynamoDB与TTL结合使用是不好的,因为根据它的说法,删除过期项目可能需要48小时,因此根据使用情况,lambda函数可能会延迟几天执行

      有几个简单的解决方案可用

      1) 在S3触发的lambda函数中,将事件置于。请注意,消息可用之前的最大延迟为15分钟


      2) 在S3触发的lambda函数中,使用并创建在给定时间执行lambda函数的规则。因为软限制是每个地区100条规则,所以请确保在处理后立即执行。

      这是一个老问题,但目前唯一的答案是误导性的。将DynamoDB与TTL结合使用是不好的,因为根据它的说法,删除过期项目可能需要48小时,因此根据使用情况,lambda函数可能会延迟几天执行

      有几个简单的解决方案可用

      1) 在S3触发的lambda函数中,将事件置于。请注意,消息可用之前的最大延迟为15分钟


      2) 在S3触发的lambda函数中,使用并创建在给定时间执行lambda函数的规则。由于软限制是每个区域100条规则,因此请确保处理完毕后立即执行。

      感谢您的回答,我想知道是否有其他方法可以使用Dynamo或自己保存数据,并更直接地进行操作,但似乎没有办法。确实有。但是你必须像你提到的那样积极地检查它(例如每15分钟检查一次)。谢谢你的回答,我希望有一种替代方法可以使用Dynamo或自己保存数据,并更直接地进行检查,但似乎没有办法。有。但是你必须像你提到的那样主动检查(例如每15分钟检查一次)。你的第一个选择听起来很酷,尽管最大延迟只有15分钟。谢谢就为了震动,我用TTL解决方案实现了dynamoDB,大多数时间都工作得很好,没有可能的延迟。您的第一个选项听起来很酷,尽管最大延迟只有15分钟。谢谢就为了震动,我用TTL解决方案实现了dynamoDB,大部分时间都工作得很好,没有可能的延迟。