Загрузка файлов из AWS S3 Bucket с помощью boto3 приводит к ClientError: Произошла ошибка (403): Запрещено - PullRequest
1 голос
/ 22 апреля 2019

Я пытаюсь загрузить файлы из корзины s3, используя идентификатор ключа доступа и секретный ключ доступа, предоставленные https://db.humanconnectome.org. Однако, хотя я могу перемещаться по базе данных и находить файлы (как у меня есть настроил мои учетные данные через aws cli), попытка загрузить их приводит к следующей ошибке: «botocore.exceptions.ClientError: Произошла ошибка (403) при вызове операции HeadObject: запрещено»

С теми же учетными данными я могу просматривать одну и ту же базу данных и загружать файлы вручную через браузер облачного хранилища, такой как Cyberduck, поэтому то, как Cyberduck обращается к данным, не вызывает ошибку 403.

Я также подтвердил, что boto3 может получить доступ к моим учетным данным aws, а также попытался их жестко кодировать.

То, как я пытаюсь загрузить данные, очень просто и повторяет пример документа boto3: https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-example-download-file.html

s3 = boto3.client('s3',
    aws_access_key_id=ACCESS_KEY_ID,
    aws_secret_access_key=ACCESS_KEY,)

s3.download_file(Bucket=BUCKET_NAME, Key=FILE_KEY, Filename=FILE_NAME)

Это должно загрузить файл в папку и файл, заданный FILE_NAME, но вместо этого вызывает ошибку 403.

1 Ответ

0 голосов
/ 22 апреля 2019

При загрузке файла вам нужно будет также указать область памяти. Попробуйте настроить region с помощью CLI или передайте region_name при создании клиента.

s3 = boto3.client('s3',
    aws_access_key_id=ACCESS_KEY_ID,
    aws_secret_access_key=ACCESS_KEY,
    region_name=AWS_REGION)

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html

...