【问题标题】:How to use mongo and AWS to store files如何使用mongodb和AWS存储文件
【发布时间】:2019-02-06 19:19:08
【问题描述】:

我正在创建一个存储大量 pdf 文档(即教育内容)的 Web 应用程序。

我知道将 pdf 文件存储在我的数据库(即 MongoDB)中并不是一个好习惯。

所以我打算在 AWS 上存储 pdf 文件,以及在我的 MongoDB 数据库中存储与 pdf 文件相关的其他详细信息,例如标题、主题、视图、评级、作者等。

我是 AWS 的新手,我会想办法使用节点将文件上传到 AWS,但我不确定如何将文件链接到 MongoDB 中的文档(记录)。

注意:文件应该以这样的方式链接到特定记录,以便我能够使用 URL 或类似的方式轻松地在前端检索文件,而且这些文件在打开时不应直接访问他们只能使用我的网站访问该 URL。

如有任何额外建议,我们将不胜感激。

【问题讨论】:

  • 既然要迁移到 AWS,为什么不考虑使用 S3 进行存储?
  • 是的,但我不确定如何将文件链接到我的 mongodb,以便我能够轻松下载它

标签: node.js mongodb amazon-web-services amazon-s3 mongoose


【解决方案1】:

也许我会采取的最佳方法是将带有 https://www.npmjs.com/package/multerhttps://www.npmjs.com/package/formidable 的 pdf 文件上传到 AWS EC2 实例,存储文件元数据,包括 AWS S3 对象密钥,该密钥可用于使用 @ 从 s3 获取对象987654323@。见Working with Amazon S3 Objects

【讨论】:

    【解决方案2】:

    This article 显示的内容与您想要实现的内容非常相似(它们使用图像而不是文档)。

    使用 MongoDB(或 DynamoDB,这是一项 AWS 服务)来存储您的文档元数据,并使用 S3 来存储实际文档。流程将如下所示:

    请注意,在这种情况下,开发人员使用Lambda function 来保存元数据。您可以使用 Node.js 来实现您的 Lambda 函数。

    【讨论】:

    【解决方案3】:

    也许您可以在 mongo 记录中添加一个字段,其中包含来自 S3 的 url?

    【讨论】:

    • 在存储时加密/哈希/令牌化 URL,并根据 IAM 的适当授权安全组/角色权限进行反转
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2017-08-06
    • 2016-03-26
    • 2019-08-21
    • 2013-10-15
    • 2013-10-27
    • 2012-02-16
    • 1970-01-01
    相关资源
    最近更新 更多