在AWS s3中保存图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在AWS s3中保存图像相关的知识,希望对你有一定的参考价值。

我打算让我的应用程序在AWS中保存图像和一些表单数据。我已经知道如何通过API网关和lambda在DynamoDB中保存Angular表单数据。但我还没有找到一种保存图像并在DynamoDB中存储图像S3位置的好方法。有人能告诉我什么是最佳做法?如果您有任何参考,将不胜感激。

我想可能直接从Angular将图像保存到S3然后让lambda监听事件并将图像S3位置保存在DynamoDB中。但是还没有找到直接从Angular保存到S3的好方法。

另一种方法是让lambda在DynamoDB中存储数据以保存图像,然后使用S3位置进行数据库保存。但还没有找到这样的例子。

也许有更好的方法。请指教。谢谢!

答案

首先,重要的是有一个直接上传机制,无需通过API网关即可将图像上传到S3。由于我们也不希望将S3存储桶保持公开,因此您可以使用以下选项之一上传图像,同时具有访问控制权限。

这样您就可以从Angular App直接上传到S3。然后,让我们看看如何在DynamoDB中保存S3文件路径。

  • 同步:在S3上传回调后,使用API​​调用保存DynamoDB中的URL(可以使用存储桶名称+路径+文件名生成URL)。
  • 异步:让事件驱动的管道使用S3触发器向Lambda执行保存到DynamoDB。

通常在Angular应用程序中,您需要在上传后立即显示图像。为此,如果您使用异步方法,您可以构建图像URL并在Angular App中显示它(如果您有一个屏幕或组件来显示它),同时期望Lambda添加它并将其存储在DynamoDB中。

注意:在这里,我没有提到任何比其他方法更好的方法,因为每个方法都有另一方面的权衡。

以上是关于在AWS s3中保存图像的主要内容,如果未能解决你的问题,请参考以下文章

heroku 上的 Django 和 imagekit 保存到 AWS S3 非常慢

从 url 下载文件并将其上传到 AWS S3 而不保存 - node.js

django aws s3 图像在上传和访问各种调整大小的图像时调整大小

Rails - 为 S3 迁移重新保存所有模型

输出文件未保存在我的存储桶中,在 AWS s3 中

AWS Elastic Beanstalk 将文件保存到 S3 或应用程序目录