Как разрешить всем доступ на чтение к корзине s3, пока запрашивающий платит?

#amazon-web-services #amazon-s3

#amazon-web-services #amazon-s3

Вопрос:

У меня есть корзина данных AWS s3, которую я хочу сделать доступной для всех, но я не хочу платить за их пропускную способность. У меня уже есть корзина, настроенная для оплаты запрашивающим, но как я могу сделать так, чтобы каждый мог только читать?

Комментарии:

1. Ну, «любой» в данном случае означает только «любую другую учетную запись AWS», верно? Простой GET без учетных данных AWS никогда не будет работать. Итак, кому именно вы хотите предоставить доступ? Просто любая другая учетная запись AWS?

2. Исправьте любого, у кого есть учетная запись aws.

Ответ №1:

Корзины Amazon S3, настроенные для оплаты запрашивающим, означают, что с запрашивающего будет взиматься плата за передачу данных. Поскольку эти расходы должны быть списаны обратно на указанную учетную запись AWS, доступ к объектам должен осуществляться через аутентифицированные запросы.

Из корзин Requester Pays — Amazon Simple Storage Service:

Если вы включаете оплату запрашивающим в корзине, анонимный доступ к этой корзине не разрешен.

С конечных точек веб-сайта — Amazon Simple Storage Service:

Корзины с оплатой запрашивающим не разрешают доступ через конечную точку веб-сайта. Любой запрос к такой корзине получает 403 Access Denied ответ.

Самый простой способ получить доступ к корзине, в которой запрашивающий платит, — это использовать, например, интерфейс командной строки AWS:

 aws s3 ls s3://bucketname --request-payer
aws s3 sync s3://bucketname/folder/ ./folder/ --request-payer
 

Интерфейс командной строки AWS будет аутентифицироваться в AWS с учетными данными, указанными в ~/.aws/credentials файле. С учетной записи AWS, связанной с этими учетными данными, будет взиматься плата за передачу данных с использованием корзины.

Обратите внимание на добавление --request-payer параметра. Из документации: «Подтверждает, что запрашивающий знает, что с него будет взиматься плата за запрос. Владельцам корзин не нужно указывать этот параметр в своих запросах «.

Кроме того, объекты должны быть общедоступными, предоставив public-read ACL или используя политику корзины, например:

 {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::bucketname",
                "arn:aws:s3:::bucketname/*"
            ]
        }
    ]
}
 

Комментарии:

1. спасибо "Principal": "*", , это то, чего мне не хватало