我尝试使用AWSS3transferutility从aws s3存储桶下载照片并将它们显示在ios应用程序的imageView中,但是,当它给我访问拒绝错误时。我敢肯定,这桶酒是向公众开放的,并且我设置了Cognito,所以我不知道为什么会发生这种情况,有人知道吗?
func getPicture() {
let tranferUtility = AWSS3TransferUtility.default()
let expression = AWSS3TransferUtilityDownloadExpression()
tranferUtility.downloadData(fromBucket: bucket, key: self.currentQuestionData!._userId!, expression: expression){ (task, url, data, error) in
if error != nil{
print(error!)
}
DispatchQueue.main.async(execute: {
self.imageView.image = UIImage(data: data!)
})
}
}
//bucket policy
{
"Id": "Policy1562706569188",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt1562706565258",
"Action": "s3:*",
"Effect": "Allow",
"Resource": "arn:aws:s3:::schooled-deployments-mobilehub-969166170",
"Principal": "*"
}
]
}
控制台中显示的错误消息是
“错误域= com.amazonaws.AWSS3TransferUtilityErrorDomain代码= 2”(空)“ UserInfo = {服务器= AmazonS3,错误= {代码= AccessDenied; HostId =” GHIlY6U4nxxqKQ / Bn8lf3FWjFZZmVhxn3DDjc8YSZQ2g9AC; 9A4S1Q1A2Q9A1C1A0CQ1A0CQ9A0C1C5C0YSZ1C2C0YSZ1C2C5E5C9C5E0C0C9A0C9C9A0C5C5C5C5C5C4Y9C2A0C9A0S7C2C2Y5A0C5E0D0E5E5C0C0E5D0C4C5D0D0D0C4A0C0C0S7A0S7A0C0C0S7A0S2C5C5E0E0C0A5C0C4A5C5E5C2C5E5C5E5;第1个错误; ;“
一些操作在存储桶上执行,而其他操作在对象级别执行。
替换此行:
"Resource": "arn:aws:s3:::schooled-deployments-mobilehub-969166170",
有了这个:
"Resource": [
"arn:aws:s3:::schooled-deployments-mobilehub-969166170",
"arn:aws:s3:::schooled-deployments-mobilehub-969166170/*"
]
这将允许访问对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句