Доступ запрещен при попытке загрузить изображение из корзины aws s3 - PullRequest
1 голос
/ 09 июля 2019

Я попытался с помощью AWSS3transferutility загрузить фотографии из корзины aws s3 и отобразить их на моем imageView в приложении ios, однако, когда оно дает мне ошибку отказа в доступе.Я уверен, что ведро открыто для публики, и я настроил 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": "*"
        }
    ]
}

Сообщение об ошибке, отображаемое в консоли:

1006 * "Ошибка домена = com.amazonaws.AWSS3TransferUtilityErrorDomain Code = 2 "(нуль)" UserInfo = {Server = AmazonS3, Error = {Code = AccessDenied; НомерУзла = "GHIlY6U4nxxqKQ / Bn8lf3FWjFZZmVhxn3DDjc8YUZY2gkguT6qdqhS54PL85AL7KaSU0Q9gSckw ="; Message ="Доступ запрещен "; RequestId = EA34AC42C00AE399;"

1 Ответ

1 голос
/ 10 июля 2019

Некоторые операции выполняются на корзине , тогда как другие операции выполняются на уровне объекта .

Заменить эту строку:

"Resource": "arn:aws:s3:::schooled-deployments-mobilehub-969166170",

с этим:

"Resource": [
    "arn:aws:s3:::schooled-deployments-mobilehub-969166170",
    "arn:aws:s3:::schooled-deployments-mobilehub-969166170/*"
]

Это разрешит доступ к объектам.

...