首页 > 解决方案 > 将文件上传到 S3 并在文件可用时立即执行处理代码

问题描述

我想知道我的应用程序是否过于复杂。我正在使用 AWS PHP SDK 将文件上传到 S3,然后使用 S3 事件触发 SNS 主题来处理我的文件。

我使用 S3 Events 的原因是我害怕在执行上传代码后立即执行处理代码;我想验证对象是否已成功上传到 S3。我害怕在上传到 S3 完成之前执行的处理代码。我在这里发帖的原因是我意识到我没有使用 JS 并且 PHP 本身不是异步的。

这个事情谁有经验?如果是这样,我是否可以安全地放弃 SNS,只是“假设”(可怕)在处理代码运行时对象将在 S3 中,或者我应该继续使用 S3 事件/SNS 来提醒我的应用程序何时该文件在 S3 中可用吗?

谢谢大家

示例代码:

$s3Client->upload("somefile.jpg");

// have no idea if this file is available yet, but...
$dataModel->process("https://s3-us-west-mock-us-url.amazonaws.com/somefile.jpg");

标签: phpamazon-web-servicesamazon-s3

解决方案


你能假设上传成功吗?当然不能,这是一项涉及网络通信的操作,因此总是存在延迟。

一旦上传到 S3 存储桶成功,您将收到 200 OK 响应,这意味着您不必使用 SNS 或类似的东西,如果您只想等待上传完成(只需等待响应) .

更好的方法(如果可能)是实际使用 S3 事件并将 lambda 函数订阅到该事件并让它处理处理。这样,您就不必在应用程序中关心它,只需假设其他东西 (lambda) 会处理它。


推荐阅读