【问题标题】:Save image in AWS s3在 AWS s3 中保存图像
【发布时间】:2018-08-11 23:36:24
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: angular amazon-s3 lambda aws-lambda


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 谢谢阿山!你的建议很周到。我搜索了签名的 URL 和 cognito 用户池,发现了这个sanderknape.com/2017/08/…。由此看来,这两种需要都存在。您能否帮助我更好地了解您将如何实现签名 URL 和/或 cognito?
    猜你喜欢
    • 2017-05-08
    • 2013-12-20
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 2017-12-15
    相关资源
    最近更新 更多