php - 将文件上传到 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");
解决方案
你能假设上传成功吗?当然不能,这是一项涉及网络通信的操作,因此总是存在延迟。
一旦上传到 S3 存储桶成功,您将收到 200 OK 响应,这意味着您不必使用 SNS 或类似的东西,如果您只想等待上传完成(只需等待响应) .
更好的方法(如果可能)是实际使用 S3 事件并将 lambda 函数订阅到该事件并让它处理处理。这样,您就不必在应用程序中关心它,只需假设其他东西 (lambda) 会处理它。
推荐阅读
- .net-core - Dotnet Core 3.1、EF1001:内部 ef core api 使用
- laravel - 降价电子邮件中的奇怪表格标签
- django - 没有自动生成的 id 字段的 Django 模型
- unity3d - 如何为 2d unity 项目设置 azure dev ops
- swift - Swift:从 API 获取数据的多线程问题
- python - Pandas 将 3 列的值与下一行交换
- c - C中的递归问题
- java - java http请求必需的字符串参数'用户名'不存在
- node.js - AWS Lambda 使用异步代码返回 NULL
- java - 使用 if 条件与三元运算符循环,后者更快,为什么