Как исправить «Отказано в доступе» при открытии URL-адреса изображения - PullRequest
0 голосов
/ 09 января 2019

Мне наконец-то удалось загрузить некоторые изображения в мое ведро s3, но я не могу их открыть. Если я перехожу к ним в моем ведре, я получаю «URL объекта», но каждый раз, когда я пытаюсь открыть его, я получаю:

<Error>
 <Code>AccessDenied</Code>
 <Message>Access Denied</Message>
 <RequestId>7F4BB573F589D927</RequestId>
 <HostId>GkYjQGNkrh84HodCaQxfTHKFCDLle82B5d4oa6EyeK1ZJMt/BeZG09eS2CIiR6Ri2Va/IvQIcIE=</HostId>
</Error>

Я добавил политику корзины:

{
    "Version": "2012-10-17",
    "Id": "Policy1547051060680",
    "Statement": [
        {
            "Sid": "Stmt1547051055882",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::bucket-name06/*"
        }
    ]
}

но это не похоже на работу. Я могу еще что-нибудь сделать?

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Ваша политика уже открыта, поэтому вам не нужно ничего менять в политике. При использовании API PutObject необходимо установить для свойства ACL значение «public-read». Кроме того, не оставляйте публичную политику общедоступной, назначьте ей политику, ограничивающую загрузку.

0 голосов
/ 09 января 2019

Вам нужно будет указать свою роль IAM, которую вы используете для доступа к учетной записи, разрешения на чтение в корзину. Вы можете сделать политику присоединения или в json это может выглядеть примерно так

 {
            "Sid": "S3Read",
            "Effect": "Allow",
            "Action": [
                "s3:Get*",
                "s3:List*"
            ],
            "Resource": [
                "arn:aws:s3:::bucket-name06",
                "arn:aws:s3:::bucket-name06/*"
            ]
 }

Предполагая, что корзина s3 находится в той же учетной записи, что и роль IAM, к которой вы пытаетесь получить доступ, вам не нужно разрешать кросс-учетный доступ. Если это не так, вам нужно разрешить стороне IAM для роли IAM читать контейнер.

Если вам нужен доступ для записи, вы можете сделать что-то похожее на это

{
            "Sid": "S3Write",
            "Effect": "Allow",
            "Action": [
                "s3:AbortMultipartUpload",
                "s3:DeleteObject",
                "s3:Get*",
                "s3:List*",
                "s3:Put*",
            ],
            "Resource": [
                    "arn:aws:s3:::bucket-name06",
                    "arn:aws:s3:::bucket-name06/*"
            ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...