繁体   English   中英

在AWS s3中保存图像

[英]Save image in AWS s3

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

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

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

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

首先,必须具有直接上传机制以将图像上传到S3而不通过API网关,这一点很重要。 由于我们也不想公开S3存储桶,因此可以在使用访问控制时使用以下选项之一上传图像。

  • 使用S3签名URLCloudFront签名URL (如果使用CloudFront)从API端点生成SignedUrl。
  • 通过使用API​​端点来生成文件或使用Cognito联合身份 ,使用IAM临时访问凭据将文件上传到S3(如果您将Cognito用户池用作IDP,则更加简单)。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM