我有一个AWS移动中心项目,我正在尝试将文件上传到自动生成的存储桶的受保护文件夹中。
我正在使用AWSS3TransferUtility在用户进行身份验证后上传文件。我在创建时查看了文件夹中的文档和网站。他们已设置权限以在不同文件夹中以不同方式保护数据。我能够将文件上传到uploads文件夹,没有任何问题。然后我尝试上传到private和protected文件夹,并从API调用中获得了授权403。我通过IAM检查了存储桶的权限。
BucketName |像|的字符串appname-userfiles-mobilehub-1213213213,ObjectPath |像|的字符串私人/ $ {cognito-identity.amazonaws.com:sub} / *
所以我推断出上传密钥必须包含密钥中的cognito-identity。如何获取当前用户的认知身份,使其匹配并允许我将文件上传到S3,同时确保其数据保护完整性?
答案 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