aws ios sdk - проблема загрузки изображений с s3
Я пытаюсь загрузить изображения из моего s3 ведра с помощью iOS SDK (Swift), но я всегда получаю access-denied
ошибка
Domain=com.amazonaws.AWSS3ErrorDomain Code=1 "(null)" UserInfo={HostId=asadadadadadad=, Message=Access Denied, Code=AccessDenied, RequestId=A467438974F8127B}]
Он отлично работает с загрузками, когда я не использую настройки ACL. Если я установил ACL
let uploadRequest = AWSS3TransferManagerUploadRequest()
uploadRequest.ACL = AWSS3ObjectCannedACL.AuthenticatedRead
обе загрузки и загрузки не удаются.
ниже приведены мои правила в отношении Cognito и IAM.
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource":["arn:aws:s3:::yimages/*"]
},{
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Effect": "Allow",
"Resource":["arn:aws:s3:::yimages"]
}
]
}
а также
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddCannedAcl",
"Effect":"Allow",
"Principal": "*",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource":["arn:aws:s3:::yimages/*"]
}
]
}
Я уверен, что это что-то связанное с политикой, но я не могу понять, что.. что меня озадачивает, почему загрузка работает, но загрузка??
Любая помощь высоко ценится..
1 ответ
- GetObject и PutObject относятся к действиям над объектами внутри корзины и не применяются к корзине (arn:aws:s3:::yimages). Для самого ведра вам необходимо предоставить действия Bucket, как показано ниже:
"Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListAllMyBuckets" ]
- Вы можете попробовать добавить аналогичную политику в явный раздел "Bucket Policy" на вкладке "Permissions", чтобы указать разрешения Bucket & Object level