当前位置: 首页 > 知识库问答 >
问题:

AWS Lambda-使用超时来确保文件被正确读取?

柴磊
2023-03-14

我使用AWS lambda作为后端来解析最近上传的文件,并维护一个json“peak”文件。我遇到的问题是,当用户上载多个文件时,同时调用lambda函数来维护峰值文件。因此,它在不等待前一个实例执行的情况下读取“peak”文件,结果是只有约1/3的文件被写入peak文件。

不幸的是,我不能批量上传到s3,也不能使用多部分上传,因为在应用程序的其余部分中,我需要每个单独的文件都在s3中自己的密钥下。

我阻止了事件循环,以便在每次文件上传和正常工作之间有一段时间,但问题是,由于我使用的是Node JS,我的服务器一直处于空闲状态,执行其任务所需的时间是实际需要的两倍。

我能做出更好的设计决定吗?我可以使用超时来强制每个lambda调用等待吗?

以下是我(试图)上述事件的一步一步:

  1. 用户上传4个文件
  2. 我使用putObject将文件上传到特定于该用户的s3 bucket键
  3. 每次putObject在s3存储桶上执行时,都会调用lambda函数
  4. lambda函数从另一个bucket读取“peaks”文件,该文件同样存储在用户特定的密钥中
  5. 解析上传的文件,并将文件峰值添加到“峰值”文件中。然后我将peaks文件写回s3存储桶

您可以看到,在步骤4和5中,不能保证lambda函数会在我在另一次调用中读取“峰值”文件之前完成。有什么提示吗?

共有1个答案

凌啸
2023-03-14

如果有其他人需要什么,这就是我最后要做的。

我没有使用S3触发器,而是从代码中触发了我的lambda函数并传递了一个包含所需任务信息的有效负载。这种方式也更有效,因为对于我的目标文件,getObject和putObject调用的比率减少到1,并且对于所有上传的文件保持不变。

你可以使用lambda。调用({parameters})以使用node js sdk执行此操作

 类似资料:
  • 问题内容: 我无法弄清楚/的运作方式。我对此有些了解,但无法使其正常工作。 我知道我可以使用,但是如果这样做,我知道我永远不会理解/ 我只会埋葬这个问题。 目标:调用并返回文件的内容。 每次调用该文件都会增加一次(每页加载)。该文件包含二进制缓冲区的转储,并存储在SSD中。 无论我做什么,都会出现错误或在控制台中。 问题答案: 要使用/,您需要返回承诺的方法。没有包装器,核心API函数就不会这样做

  • 我理解下面的代码可以正常工作。在阅读Python中的while循环文档时,他们说while表达式应该是True或False,这很有意义。 现在,函数返回字符串。那么这个while循环是如何工作的呢?

  • 我有以下代码来读取java文件,并打印出行。我通过两种方式实现了它: 使用流: 使用循环: 我被告知这是错误的,使用缓冲读取器是错误地使用了语言的特性。有没有更好的方法,我想知道使用语言功能的正确方法。

  • 一些细节: Android6 文件名错误(2131099680ggj.3gp而不是ggj.3gp) 将文件保存在内部存储中,而不是保存在名为“TrueCapture”的新文件夹中的外部存储(SD卡在智能手机中)中。 除了Smartphone的explorer应用程序之外,似乎没有其他应用程序知道此文件

  • 我打开这个链接"http://www.amazon.com/s?rh=n: 1"与urllib2和我试图获取下一页链接(href="/s/ref=lp_1_pg_2?rh=n: 283155, n:!1000, n: 1

  • 不管怎样,我在我的项目中使用了registfit/OkHttp,并认为这应该是Okio的一个很好的用法。这就是我目前所拥有的,它似乎起作用了。但是我是Okio的新手,不知道我是否遗漏了一些明显的东西,或者这是否可以用更好的方式来完成。 您可以看到,我正在绑定upload一个块,等待成功响应(来自Java8),然后使用更新的和再次调用方法。就像我说的,它很有效,但我是Okio的新手,我想知道我是否错