Когда я просто запускаю следующий код, я всегда получаю эту ошибку.
s3 = boto3.resource('s3')
bucket_name = "python-sdk-sample-%s" % uuid.uuid4()
print("Creating new bucket with name:", bucket_name)
s3.create_bucket(Bucket=bucket_name)
Я сохранил свой файл учетных данных в
C:\Users\myname\.aws\credentials
, откуда Бото должен читать мои учетные данные.
Моя настройка неправильная?
Вот результат boto3.set_stream_logger('botocore', level='DEBUG')
.
2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Skipping environment variable credential check because profile name was explicitly set.
2015-10-24 14:22:28,761 botocore.credentials [DEBUG] Looking for credentials via: env
2015-10-24 14:22:28,773 botocore.credentials [DEBUG] Looking for credentials via: shared-credentials-file
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: config-file
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: ec2-credentials-file
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: boto-config
2015-10-24 14:22:28,774 botocore.credentials [DEBUG] Looking for credentials via: iam-role
boto3.set_stream_logger('botocore', level='DEBUG')
перед кодом? Он покажет, где он ищет учетные данные.HOME
чтобы указать наC:\Users\myname
или настройки ,AWS_SHARED_CREDENTIALS_FILE
чтобы указать непосредственно в файл мандатной.botocore.exceptions.NoRegionError: You must specify a region.
* мой файл конфигурации ↓ находится в той же папке, что и мои учетные данные.[default] ap-northeast-1
Ответы:
попробуйте указать ключи вручную
Убедитесь, что вы не включили свои ACCESS_ID и ACCESS_KEY в код напрямую из соображений безопасности. Рассмотрите возможность использования конфигураций среды и внедрения их в код, как это предлагает @Tiger_Mike.
Для сред Prod рассмотрите возможность использования вращающихся ключей доступа: https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#Using_RotateAccessKey
источник
.env
файла (не зафиксированного) была бы идеальной и была бы лучше, чем необходимость выбирать из~/.aws/
папки.У меня была такая же проблема, и я обнаружил, что формат моего
~/.aws/credentials
файла неправильный.Он работал с файлом, содержащим:
Обратите внимание, что имя профиля должно быть "
[default]
". Некоторая официальная документация ссылается на профиль с именем "[credentials]
", который у меня не работал.источник
aws configure
также работает, если у вас установлен aws-Если вы ищете альтернативный способ, попробуйте добавить свои учетные данные с помощью AmazonCLI.
от типа терминала: -
затем введите свои ключи и регион.
источник
Убедитесь, что ваш файл ~ / .aws / credentials в Unix выглядит так:
Ваш сценарий Python должен выглядеть так, и он будет работать:
Источник: https://boto3.readthedocs.io/en/latest/guide/configuration.html#interactive-configuration .
источник
output = json
Как правило , помещают в~/.aws/config
в[profile MyProfile1]
секции. Это может не сработать, еслиcredentials
вместо этого указано в файле.Эти инструкции предназначены для компьютера под управлением Windows с одним профилем пользователя для AWS. Убедитесь, что ваш
~/.aws/credentials
файл выглядит такМне пришлось установить
AWS_DEFAULT_PROFILE
переменную средыprofile_name
в ваши учетные данные.Затем мой питон смог подключиться. например отсюда
источник
У меня тоже была такая же проблема, ее можно решить, создав файл конфигурации и учетных данных в домашнем каталоге. Ниже показаны шаги, которые я сделал для решения этой проблемы.
Создайте файл конфигурации:
И в этом файле я ввел регион
Затем создайте файл учетных данных:
Затем введите свои учетные данные
После установки всего этого мой файл python для подключения ведра. Запустите этот файл, чтобы просмотреть все содержимое.
Вы также можете обратиться к ссылкам ниже:
источник
от типа терминала: -
затем введите свои ключи и регион.
после этого сделайте следующий шаг, используйте любую среду. У вас может быть несколько ключей в зависимости от вашей учетной записи. Может управлять несколькими средами или ключами
источник
Я работаю в крупной корпорации и столкнулся с той же ошибкой, но мне потребовалось другое решение. Моя проблема была связана с настройками прокси. У меня был настроен прокси-сервер, поэтому мне нужно было установить no_proxy в белый список AWS, прежде чем я смогу заставить все работать. Вы также можете установить его в своем сценарии bash, если не хотите запутывать свой код Python настройками ОС.
Python:
Баш:
Изменить: вышеупомянутое предполагает регион S3 востока США. Для других регионов: используйте s3. [Регион] .amazonaws.com, где регион - это что-то вроде us-east-1 или us-west-2.
источник
no_proxy
для169.254.169.254
того , чтобы клиент мог получить AWS к службе метаданных , чтобы найти профиль экземпляра.Boto3 ищет учетные данные в папке, например
Вы должны сохранить два файла в этой папке
credentials
иconfig
.Вы можете проверить общий порядок, в котором boto3 ищет учетные данные по этой ссылке . Посмотрите под заголовком Настройка учетных данных .
источник
Если вы уверены, что правильно настроили aws, просто убедитесь, что пользователь проекта может читать из ./aws, или просто запустите ваш проект от имени пользователя root.
источник
Если у вас есть несколько профилей AWS в
~/.aws/credentials
как ...Выполните два шага:
Сделайте тот, который вы хотите использовать по умолчанию, используя
export AWS_DEFAULT_PROFILE=Profile 1
команду в терминале.Обязательно запускайте указанную выше команду в том же терминале, в котором вы используете boto3, или открываете редактор. [Примите во внимание следующий сценарий]
Сценарий:
t1
иt2
.t1
и открываете JupyterLab или любой другой изt2
, вы получите NoCredentialsError: Невозможно найти ошибку учетных данных.Решение:
t1
а затем откройте JupyterLab или любой другой из того же терминалаt1
.источник
Создайте клиентский объект S3 с вашими учетными данными
Всегда полезно получить учетные данные из среды ОС
источник