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 ответ

  1. GetObject и PutObject относятся к действиям над объектами внутри корзины и не применяются к корзине (arn:aws:s3:::yimages). Для самого ведра вам необходимо предоставить действия Bucket, как показано ниже:
"Action": [
            "s3:GetBucketLocation",
            "s3:ListBucket",
            "s3:ListAllMyBuckets"
        ]
  1. Вы можете попробовать добавить аналогичную политику в явный раздел "Bucket Policy" на вкладке "Permissions", чтобы указать разрешения Bucket & Object level
Другие вопросы по тегам