【问题标题】:Long polling AWS S3 to check if item exists?长轮询 AWS S3 以检查项目是否存在?
【发布时间】:2019-07-28 15:21:21
【问题描述】:

这里的上下文很简单,有一个 lambda (lambda1) 异步创建文件,然后将其上传到 S3。

然后,另一个 lambda (lambda2) 接收即将存在的文件名,并需要继续检查 S3 直到文件存在。

我认为 S3 触发器不会起作用,因为 lambda2 是由客户端请求调用的

1) 我是否需要为 lambda 和 S3 之间的此类请求付费?我会轮询它直到对象存在

2) 我还有什么其他不产生费用的方式来实现这一点?

3) 我用什么方法来检查文件是否存在于 S3 中? (只是尝试获取它并检查状态码?)

【问题讨论】:

  • 你在 lambda 和 S3 之间使用了触发器吗?
  • @ViharManchala 无法工作,因为客户端调用了 lambda2
  • 您需要为 lambda 执行时间付费。我建议你使用触发器。
  • 能否请您编辑您的问题并解释有关该场景的更多信息?例如,“lambda1 异步创建文件”是什么意思? Lambda 函数是等待创建失败还是在创建文件之前退出? (那么文件实际上是如何创建的?)“lambda2 需要继续检查”是什么意思 - 你的意思是 lambda2 执行一次并保持循环直到它看起来是文件?鉴于 Lambda 函数有 15 分钟的时间限制,它通常等待多长时间? “客户端请求调用 lambda2”是什么意思?

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


【解决方案1】:

看起来您应该在 Lambda 上使用 S3 objectCreated 触发器。这样,无论何时创建对象,它都会使用文件元数据自动触发您的 Lambda 函数。

See here for information on configuring an S3 event trigger

【讨论】:

【解决方案2】:

让我确保我理解正确。

  1. 客户端调用 Lambda1。 Lambda1 创建一个文件异步并上传到 S3 一旦 lambda1 开始它的异步处理,对 lambda one 的调用就会返回。
  2. 客户端调用 lambda2,从 s3 拉取 lambda1 将要推送到那里的文件。

为什么不直接等待 Lambda 创建文件并将其返回给客户端?否则这将是一个昂贵的文件交换。

【讨论】:

  • 好吧,客户可能要等待几分钟才能得到响应,我认为这不是好的设计
  • 我正在考虑解决删除请求是免费的这一事实,所以我会在主文件中创建一个虚拟文件并继续尝试删除它,当它成功时我知道主文件已准备好:D
  • 客户不也会等着你的方法吗?
  • 他在等待文件而不是响应,因为他不断收到“文件尚未准备好”的响应,这是为了轮廓超时
  • 所以问题是如何通知客户端文件已准备就绪。
猜你喜欢
  • 2015-07-27
  • 2012-01-25
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多