如何使用AWS移动集线器创建的s3存储桶将文件从Swift上传到受保护的s3存储桶?

时间:2018-06-02 22:21:51

标签: swift amazon-s3 amazon-iam aws-mobilehub

我有一个AWS移动中心项目,我正在尝试将文件上传到自动生成的存储桶的受保护文件夹中。

S3 Bucket

  • 私有
  • 保护
  • 公共
  • 上传

我正在使用AWSS3TransferUtility在用户进行身份验证后上传文件。我在创建时查看了文件夹中的文档和网站。他们已设置权限以在不同文件夹中以不同方式保护数据。我能够将文件上传到uploads文件夹,没有任何问题。然后我尝试上传到private和protected文件夹,并从API调用中获得了授权403。我通过IAM检查了存储桶的权限。

来自IAM

的示例

BucketName |像|的字符串appname-userfiles-mobilehub-1213213213,ObjectPath |像|的字符串私人/ $ {cognito-identity.amazonaws.com:sub} / *

所以我推断出上传密钥必须包含密钥中的cognito-identity。如何获取当前用户的认知身份,使其匹配并允许我将文件上传到S3,同时确保其数据保护完整性?

1 个答案:

答案 0 :(得分:1)

我有AWSIdentifyManager来提取用户ID。

// start of upload code
let transferUtility = AWSS3TransferUtility.default()
let user = AWSIdentityManager.default().identityId
let newKey = "protected/"+user!+"/"+fileURL.lastPathComponent

 transferUtility.uploadData(
     data,
     bucket: "appbucket-name",
     key: newKey,
      contentType: "text/plain",
 ...
 //rest of code from the docs