Мне нужно загрузить некоторые файлы воспроизведения из 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)
Но мне все еще не удается загрузить файл.
Любая помощь приветствуется!Спасибо!