从iOS App上传到Amazon S3

时间:2011-11-24 12:27:51

标签: ios upload amazon-s3

让我们从问题陈述开始:

我的iOS应用程序有一个登录表单。当用户登录时,将调用我的API并授予或拒绝访问权限。如果授予了访问权限,我希望用户能够将图片上传到他的帐户和/或管理它们。

作为存储,我选择了亚马逊S3,我认为最好有一个名为“myappphotos”的存储桶,其中包含大量文件夹。文件夹名称是用户电子邮件和密钥的哈希值。因此,每个用户在我的Amazon S3存储桶中都有自己独特的文件夹。

由于我刚刚开始使用AWS,这是我的问题:

设置这样的系统有哪些最佳做法?我希望用户能够将图片直接上传到Amazon S3,但当然我无法对访问密钥进行硬编码。因此,我需要我的API以某种方式与亚马逊交谈,并请求各种访问令牌 - 仅针对属于我正在请求的用户的特定文件夹。

任何人都可以帮助我和/或引导我找到解决类似问题的某些来源吗?不要以为我是第一个,亚马逊的文档太广泛了,我真的不知道从哪里开始看。

非常感谢!

5 个答案:

答案 0 :(得分:13)

你看过Amazon AWS SDK for iOS吗?

来自文档:

  

AWSiOSDemoTVM和AWSiOSDemoTVMIdentity样本演示了更多内容   用于将AWS安全凭证传输到移动设备的安全机制   客户。这些示例需要服务器应用程序,在本例中为   令牌自动售货机(TVM),作为单独下载提供。   示例应用程序向TVM注册,匿名或使用   用户提供的用户名和密码。 TVM使用AWS Security   令牌服务以获取临时安全凭证并将其传递给   移动应用程序。

     

TVM有两种形式,一种支持匿名   注册和需要用户名和密码的注册   注册设备并接收安全令牌。下载并安装   用于匿名注册的TVM,请转到   http://aws.amazon.com/code/8872061742402990。下载并安装   身份登记TVM,请转到   http://aws.amazon.com/code/7351543942956566

来自Authenticating Users of AWS Mobile Applications with a Token Vending Machine

  

本文讨论了支持应用程序的体系结构   在移动设备上运行以更安全地与Amazon Web交互   Amazon Simple Storage Service(S3),Amazon SimpleDB等服务,   Amazon Simple Notification Service(SNS)和Amazon Simple Queue   服务(SQS)。讨论的架构使用“令牌自动售货机”   机器“将临时安全凭证分发给移动设备   应用

您的令牌可以限制对S3上特定存储桶的访问,因此它似乎是最佳选择。

答案 1 :(得分:2)

答案 2 :(得分:2)

进一步澄清Terry Wilcox的答案......

您需要使用AWS STS 在服务器上生成临时安全凭据。

STS是AWS的“安全令牌服务”。它允许您以编程方式创建访问密钥并设置特定权限和到期日期。

由于您的应用程序的API /后端已经对用户进行身份验证,因此您可以进行API调用,以生成只能访问该用户文件夹的临时AWS凭据。

如果您没有应用程序的后端,亚马逊提供了一个Java应用程序调用TVM(令牌自动售货机),您可以轻松地将自己的实例部署到Elastic Beanstalk。

相关AWS文章:
http://aws.amazon.com/articles/4611615499399490 http://docs.aws.amazon.com/STS/latest/UsingSTS/STSUseCases.html#MobileApplication

答案 3 :(得分:0)

您可以限制用户对文件夹级别的访问权限。请参阅此示例Credential Management

答案 4 :(得分:0)

2020-您应该使用亚马逊官方工具:Amplify

它基本上要求您的用户对应用进行身份验证(与Firebase有点相似),从而为您保护连接。

这里有一个很棒的文件上传示例: https://docs.amplify.aws/lib/storage/getting-started/q/platform/ios#initialize-amplify-storage