#python #amazon-web-services #amazon-s3 #boto3 #botocore
#python #amazon-веб-сервисы #amazon-s3 #boto3 #botocore
Вопрос:
Я пытаюсь загрузить файлы из корзины s3, используя идентификатор ключа доступа и секретный ключ доступа, предоставленныеhttps://db.humanconnectome.org. Однако, несмотря на то, что я могу перемещаться по базе данных и находить файлы (поскольку я настроил свои учетные данные через aws cli), попытка загрузить их приводит к следующей ошибке: «botocore.exceptions.ClientError: произошла ошибка (403) при вызове операции HeadObject: запрещено»
С теми же учетными данными я могу просматривать ту же базу данных и загружать файлы вручную через браузер облачного хранилища, такой как Cyberduck, поэтому доступ Cyberduck к данным не вызывает ошибку 403 Forbidden.
Я также проверил, что 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 Forbidden.
Комментарии:
1. Попробуйте убедиться, что у вас есть правильное имя корзины s3 и правильный ключ файла. Согласно docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectGET.html Если у вас нет разрешения ListObject для этой корзины, вы получите 403 (доступ запрещен) вместо 404 («нет такого ключа»). Таким образом, код ошибки может немного вводить в заблуждение.
Ответ №1:
Вам также нужно будет передать область корзины при загрузке файла. Попробуйте настроить, region
используя CLI или pass 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
Комментарии:
1. Все еще не работает, несмотря на указание региона в моем случае:(
Ответ №2:
Я знаю, это может показаться смешным, но убедитесь, что у вас нет опечатки в имени вашей корзины или чего-либо подобного.
Я так долго работал, пытаясь исправить это, только чтобы понять, что добавил дополнительную букву в переменную env, которую я установил для своей корзины s3.
Странно, что они выдают вам запрещенную ошибку в отличие от ошибки «не найдено», но они это делают.