Загрузка файла с запрашивающей стороны оплачивается в Amazon S3 - PullRequest
0 голосов
/ 24 октября 2018

Мне нужно загрузить некоторые файлы воспроизведения из API , в котором файлы хранятся в корзине amazon s3, с включенной платой запрашивающей стороны.

Проблема в том, что я настроил свой amazonУчетная запись AWS, создала AWSAccessKeyId и AWSSecretKey, но я все еще не могу загрузить один файл, так как я получаю ответ Access denied.

Я хочу автоматизировать все это внутрискрипт Python, поэтому я пытался сделать это с помощью пакета boto3.Кроме того, я установил Amazon AWS CLI и настроил свой идентификатор доступа и секретный ключ.

Файл, который я пытался загрузить (я хочу загрузить несколько, но сейчас я пытаюсь столько один) это: http://hotsapi.s3 -website-eu-west-1.amazonaws.com / 18e8b4df-6dad-e1f5-bfc7-48899e6e6a16.StormReplay

Из того, что яДо сих пор нашел на SO, я попробовал что-то вроде этого:

import boto3
import botocore

BUCKET_NAME = 'hotsapi' # replace with your bucket name
KEY = '18e8b4df-6dad-e1f5-bfc7-48899e6e6a16.StormReplay' # replace with your object key

s3 = boto3.resource('s3')

try:
    s3.Bucket(BUCKET_NAME).download_file(KEY, 'test.StormReplay')
except botocore.exceptions.ClientError as e:
    if e.response['Error']['Code'] == "404":
        print("The object does not exist.")
    else:
        raise

И это:

import boto3

s3_client = boto3.Session().client('s3')
response = s3_client.get_object(Bucket='hotsapi',
                                Key='18e8b4df-6dad-e1f5-bfc7-48899e6e6a16.StormReplay', 
                                RequestPayer='requester')
response_content = response['Body'].read()

with open('./B01.StormReplay', 'wb') as file:
    file.write(response_content)

Но мне все еще не удается загрузить файл.

Любая помощь приветствуется!Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...