Учетные данные S3 для общедоступной корзины?

#amazon-web-services #amazon-s3 #boto3

#amazon-web-services #amazon-s3 #boto3

Вопрос:

У меня есть этот фрагмент для загрузки файла на S3

 s3 = boto3.resource('s3')
s3.Object('bucketname', timestamped_filename).put(Body=open(FILE_SAVE_PATH, 'rb'))
  

у моего хранилища есть разрешение на удаление / загрузку для всех, поэтому оно работает на моем компьютере с Windows.
Однако, когда я пытаюсь запустить тот же код на своем Mac, он выдает

botocore.exeptions.NoCredentialsError: Unable to locate credentials

Является ли такое поведение нормальным? И какие учетные данные я могу предоставить, если я получаю доступ к общедоступной корзине?

Спасибо.

Ответ №1:

При выполнении вызова API в AWS необходимо предоставить действительные учетные данные. Эти учетные данные связаны с пользователем IAM и предоставляют доступ к сервисам AWS.

При выполнении вызовов API (или с помощью интерфейса командной строки AWS (CLI)) из экземпляра Amazon EC2 эти учетные данные могут быть предоставлены экземпляру EC2 путем присвоения экземпляру роли IAM во время запуска.

При выполнении вызовов с компьютера, отличного от EC2, учетные данные должны предоставляться через файл конфигурации или переменные среды.

Похоже, что ваш компьютер с Windows является либо экземпляром EC2 с определенной ролью, либо имеет локальный файл конфигурации с действительными учетными данными; и похоже, что ваш Mac не имеет ни того, ни другого.

Смотрите: документация по учетным данным boto3