AWS Lambda:调用invoke API操作失败,并显示以下消息:网络错误

时间:2018-11-06 21:47:10

标签: python amazon-web-services amazon-s3 aws-lambda boto3

我创建了一个lambda,该lambda遍历给定S3存储桶中的所有文件,并删除S3存储桶中的文件。 S3存储桶中有大约10万个文件,我正在选择和删除大约6万个文件。我已将lambda的超时设置为最大(15分钟)超时值。尽管在返回错误之后,lambda似乎在后台运行了一段时间,但几分钟后它始终会返回“网络错误”。如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

S3具有Rate Limiting,它限制了您每秒可以进行的读写次数。

  

Amazon S3自动扩展到高请求率。例如,   您的应用程序至少可以实现3500个PUT / POST / DELETE和5500个   桶中每个前缀每秒获取GET请求的数量。没有限制   存储桶中的前缀数。增加阅读量很简单   或成倍地提高性能。例如,如果您创建10   Amazon S3存储桶中的前缀以并行读取,您可以扩展   您的读取性能达到每秒55,000个读取请求。

如果所有这些对象的键(文件路径)中都具有相同的8个字符,则它们使用相同的前缀,并且限制为3500个DELETE和5500个GET。在这种情况下,您需要定期执行此操作,请考虑更改前缀,以使密钥的前8个字符不同,从而迫使对象分布在更多节点上。我的previous answers之一对此进行了详细介绍。

或者,您可以使用bulk delete操作删除每个操作最多1000个对象。

您看到的延迟可能是由于{3}在S3跨区域的AZ进行同步时造成的。

  

Amazon S3为覆盖所有地区的PUTS和DELETES提供最终的一致性。

答案 1 :(得分:1)

我正在测试另一个函数,结果出现了这个错误。阅读了一些文档,我发现我激活了油门选项,它降低了您的功能的速率。

解决方案是创建另一个函数,然后查看油门是否出现该错误。