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

и загрузка, и загрузка не работают.

ниже приведены мои политики в отношении когнито и 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/*"]
    }
  ]
}

Я уверен, что это как-то связано с политиками, но я не могу понять, что... что меня озадачивает, так это почему загрузка работает, а загрузка??

Любая помощь высоко ценится..


person RameshVel    schedule 07.04.2016    source источник


Ответы (1)


  1. GetObject и PutObject относятся к действиям над объектами внутри корзины и не применяются к корзине (arn:aws:s3:::yimages). Для самого ведра вам необходимо предоставить действия ведра, как показано ниже:
"Action": [
            "s3:GetBucketLocation",
            "s3:ListBucket",
            "s3:ListAllMyBuckets"
        ]
  1. Вы можете попробовать добавить аналогичную политику в явный раздел «Политика корзины» на вкладке «Разрешения», чтобы указать разрешения уровня корзины и объекта.
person javatogo    schedule 27.11.2017