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

AWS-想要上传多个文件到S3,并且只有当所有文件都上传时才触发一个lambda函数

程修雅
2023-03-14

我在寻求最好的设计方法-

用例

思想

我不认为这是个好主意。主要是因为Lambda函数应该是轻量级的,并且从Lambda函数内部轮询数据库以获得所有上传文件的S3键,然后在S3中签入这些键--每次这样做似乎都很麻烦,而且非常重复。

更好的方法是什么?我在考虑使用SWF之类的东西,但不确定这是否对我的解决方案来说是过激的,或者它是否会让我做我想做的事情。文档也没有显示真正的“示例”。这只是一个讨论,没有太多的一步一步的指导(也许我找错地方了)。

使用S3的选项3触发了我在这里担心的是竞争条件的可能性。例如,如果客户机同时上传了多个文件(想想几个异步上传,文件大小不同),如果两个文件恰好在同一时间完成上传,并且两个或更多的Lambda函数(或我们使用的任何实现)查询Dynamo并返回N作为完成的上传(而不是N和N+1)怎么办?现在,即使最后的结果应该是n+2,每一个都会在n上加1。不,不,不!

所以选择1获胜。

共有1个答案

佘俊茂
2023-03-14

如果您不希望客户机程序负责直接调用Lambda函数,那么它是否可以做一些更通用的事情?

选项1:(SNS)如果它只是通知一个SNS主题它已经完成了一批S3上传怎么办?您可以订阅您的Lambda函数到该SNS主题。

选项2:(DynamoDB Streams)如果它只是用属性record.allFilesUploaded=true来更新DynamoDB记录会怎么样。您可以让Lambda函数触发DynamoDB流。由于您已经通过客户机创建了DynamoDB记录,所以这似乎是一种非常简单的方法,可以将这批上传标记为完成,而不必在了解接下来需要发生什么的情况下编写代码。然后,Lambda函数可以检查“AllFilesUploaded”属性,而不必每次调用时都去S3查找文件列表。

此外,我同意你的观点,即主权财富基金对这项任务来说是矫枉过正。

 类似资料:
  • 我正在尝试使用AWS Lambda/S3构建一个服务,该服务将用户电子邮件作为输入,并输出带有PDF附件的响应电子邮件。我发送给用户的最终PDF是通过将我之前根据输入电子邮件生成的两种PDF合并在一起生成的。架构的完整图见下图。 建筑示意图 我遇到的问题与合并PDF Lambda函数有关,该函数接收类型1和类型2 PDF并生成类型3 PDF。一旦一组完整的类型1和2 PDF准备就绪并在S3中等待,

  • 问题内容: 当您上传用PHP编写的文件(带有进度条)时,我想要一个Gmail中显示的AJAX文件上传器。 有人有主意吗? 谢谢。 问题答案: 您可以使用以下插件: http://aquantum-demo.appspot.com/file-upload 要么 http://valums.com/files/2010/file- uploader/demo.htm 要么 http://www.upl

  • 我正在使用lambda nodejs将文件上传到ftp服务器。 上传文件的源代码: index.js文件: 运行后的日志: 回应: 零 请求ID: “9c8e1701-ad54-42eb-8dc6-bbed77bc9b41” 函数日志: 开始请求id:9c8e 1701-ad54-42e b-8dc 6-bbed 77 BC 9 b 41版本:$最新 结束请求ID:9c8e1701-ad54-42

  • 我想从hadoop上传一些文件到AWS bucket。我有AWS访问密钥、保密密钥和S3导入路径。 我无法通过AWS CLI命令访问。我在aws凭证文件中设置了密钥。我尝试执行“aws s3 ls ”,但得到的错误是 由于上面的代码不起作用,我尝试使用distcp命令,如下所示。 对于上面的命令,我也得到下面的错误。 18/11/09 00:55:40信息http.AmazonHttpClient

  • 我最近开始在AWS上工作。我目前正在开发S3存储的上传功能。 根据我的理解,有两种方法可以将文件上传到S3:- > 客户端的文件被上传到我的服务器上,我使用我的凭据将此文件上传到S3服务器。[我也可以对客户隐藏这一点,因为我不会显示上传详细信息。] 直接上传到S3 我能够使用简单的上传api实现第一种方法,但是我想跳过“将上传文件写入服务器磁盘”部分,直接将内容流式传输到S3存储,同时将上传详细信

  • 问题内容: 我遇到了这个简单的js ajax上传代码(由于某种原因,jquery 似乎不适用于HTML5), 但是我这里有两个问题, 这条线在物体之后是什么意思? 为什么在那里需要ID?我能做些什么使用jQuery 用? 此ajax仅用于单个文件上传,如何更改多个文件上传? 问题答案: 这行在对象FormData之后是什么意思? 在得到由它的ID元件。该抓住从元件中的第一选择的文件。将其追加到与字