【问题标题】:Uploading to S3, in iOS or in Node.js [closed]在 iOS 或 Node.js 中上传到 S3 [关闭]
【发布时间】:2014-11-29 01:32:55
【问题描述】:

我正在开发一个 iOS 应用程序,该应用程序将上传图像和视频并为每个用户保存它们。我能够集成 amazon s3 并从 iOS 应用程序进行上传,我已经有一个 node.js 后端,我保存了关于我保存在 S3 中的文件的元数据以及我从 iOS 返回的 S3 Id。 我的问题是:这是一个好的架构,还是应该将 S3 保存活动移至后端?其他应用程序(如 instagram / vine )应该如何处理移动设备或后端?

谢谢

【问题讨论】:

    标签: ios node.js amazon-web-services amazon-s3


    【解决方案1】:

    您所做的被认为是最佳实践:让移动设备直接安全地上传到 S3。

    文档:

    您必须通过制定正确的 IAM 策略来确保只有您的用户才能将对象上传到 S3。根据您对用户进行身份验证的方式,Cognito Identity 可能有助于通过 AWS STS 代理从第三方提供商(如 Google、Facebook 或 Amazon)或您自己的(OpenID Connect 令牌)收到的身份令牌,以接收临时访问密钥和秘密密钥。

    文档:

    直接上传允许您的应用程序和用户群扩展,而无需在后端增加额外的计算能力。 S3 是一种大规模并行对象存储,它将处理您的移动设备流量,将您从低级别任务中解放出来,例如监控、扩展、修补……您的后端。

    既然 Lambda 可用(预览版),您还可以考虑在 Lambda 函数中捕获有关 S3 对象的元数据,并直接从 lambda 将元数据上传到您的后端存储(DynamoDB 或关系数据库)。考虑到 Lambda 的大量免费层使用,此解决方案将比运行您自己的后端更具成本效益。 您熟悉 Lambda 使用的框架 Node.JS,因此它们对您来说几乎没有学习曲线。

    文档:

    【讨论】:

    • 我阅读了 AWS 文档,但只是想获得第二意见。所以这意味着 Node.js 层将只处理元数据并且永远不会很重,这是我想要的。作为一个额外的问题,您认为这种架构适用于任何类型的文件吗?所以让我们假设应用程序将像一个 Dropbox 类型一样工作,只是保存用户数据,我让应用程序将文件上传到 S3,并获取一个 ID 并将其保存在 Node.js 中?
    • 是的,它适用于任何类型的文件。单个 PUT 操作的限制为 5Gb。大于该大小的文件必须以 HTTP 多部分形式发送,每个文件最多 5TB,这是 S3 的最大值。有关详细信息,请参阅stackoverflow.com/questions/12980745/large-file-from-ec2-to-s3。再一次,如果考虑这种架构,请查看 Lambda 来收集您的文件元数据……不需要 EC2 实例来实现这一点
    猜你喜欢
    • 1970-01-01
    • 2015-08-31
    • 2013-08-27
    • 2015-12-30
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 2011-04-07
    • 2016-04-24
    相关资源
    最近更新 更多