Amazon web services 使用lambda函数的AWS S3桶索引

Amazon web services 使用lambda函数的AWS S3桶索引,amazon-web-services,amazon-s3,aws-lambda,Amazon Web Services,Amazon S3,Aws Lambda,我有一个S3 bucket网站,它有多个HTML文件,现在我创建了一个lambda函数并将其连接到S3触发器。现在我已经创建了一个lambda函数,我想首先将S3 bucket的当前HTML文件索引到我的弹性搜索域索引中,如果我上传或删除S3 bucket中的任何HTML文件,那么这个lambda函数应该将其索引到ES域。 问题是,当我上传一个新的HTML文件时,我无法为我的所有当前HTML编制索引,也无法将它们编入ES域索引 将Lambda函数转换为indexall,然后逐个索引。我还想在AW

我有一个S3 bucket网站,它有多个HTML文件,现在我创建了一个lambda函数并将其连接到S3触发器。现在我已经创建了一个lambda函数,我想首先将S3 bucket的当前HTML文件索引到我的弹性搜索域索引中,如果我上传或删除S3 bucket中的任何HTML文件,那么这个lambda函数应该将其索引到ES域。 问题是,当我上传一个新的HTML文件时,我无法为我的所有当前HTML编制索引,也无法将它们编入ES域索引

将Lambda函数转换为indexall,然后逐个索引。我还想在AWS lambda test for S3中创建一个测试,并使用event
indexAll
首先索引所有文件


错误是在3秒内超时:

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

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


作为EC2的替代方案,处理现有文件的一个选项是在bucket中创建一个现有对象的列表(如果bucket的大小合理,比如10k个项目或更少,您可以只列出bucket,或者如果它是一个非常大的bucket,您可以使用S3库存报告)。无论哪种方式,都要获得一个对象列表,然后将它们逐个发送到SQS队列。让SQS触发Lambda函数每次调用一个对象或每次调用一批10个对象。

Lambda函数超时过低(默认值为3秒)

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


作为EC2的替代方案,处理现有文件的一个选项是在bucket中创建一个现有对象的列表(如果bucket的大小合理,比如10k个项目或更少,您可以只列出bucket,或者如果它是一个非常大的bucket,您可以使用S3库存报告)。无论哪种方式,都要获得一个对象列表,然后将它们逐个发送到SQS队列。让SQS触发Lambda函数每次调用一个对象或每次调用一批10个对象。

但是,我如何将所有S3 HTML文件索引到我的ES索引呢?在Amazon EC2实例上运行程序可能更容易索引现有页面,只需使用Lambda函数添加“新创建的”页面。我是新的两个AWS,如果我在同一个bucket上上传新的html文件,上面的代码将索引ES domain@John RotensteinYes中的新PUT事件,如果你上传一个具有现有名称的对象,它仍然会触发事件。但是,我如何将所有S3 HTML文件索引到我的ES指示符?在Amazon EC2实例上运行您的程序,并使用Lambda函数添加“新创建的”页面,可能会更容易索引现有页面。我是两个新AWS,好的,如果我在同一个bucket上上传新的html文件,上面的代码将索引ES domain@John RotensteinYes中的新PUT事件,如果你上传一个具有现有名称的对象,它仍然会触发事件。