使用Lambda函数的AWS S3存储桶索引

时间:2020-03-24 21:17:10

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

我有一个具有多个HTML文件的S3存储桶网站,现在我创建了一个lambda函数并将其连接到S3触发器。现在我已经创建了一个lambda函数,我希望第一个索引将S3存储桶中的所有当前HTML文件都添加到我的弹性搜索域索引中,之后,如果我上传或删除S3存储桶中的任何HTML文件,则此lambda函数应该将其索引为ES域。 问题是,当我上传新的HTML文件时,我也无法为所有当前HTML编制索引,而无法将其编制为ES域索引。

Lambda函数先索引所有索引,然后再一个索引。我也想在AWS Lambda测试中为S3创建一个测试,并使用事件indexAll首先索引所有文件。

错误超时时间为3秒:

1 个答案:

答案 0 :(得分:2)

您的Lambda函数超时太低(默认值为3秒)。

此外,尝试对Lambda函数的一次调用中的所有S3对象进行分析/索引也不是一个好主意,除非您可以限制对象的数量。 Lambda的最大超时时间为15分钟。

作为EC2的替代方案,处理现有文件的一种方法是在存储桶中创建一个现有对象的列表(如果存储桶的大小合理,例如1万个或更少,则可以只列出存储桶,或者如果存储桶很大,请使用S3库存报告)。无论哪种方式,都获取对象列表,然后将它们一个接一个地发送到SQS队列。让SQS每次调用一个对象或一次调用一批10个对象来触发Lambda函数。