В настоящее время я пытаюсь подключиться к AWS с виртуальной машины Ubuntu 14, работающей внутри операционной системы Windows 8. В оболочке Ubuntu, я бегу:Подключение AWS Boto работает только от оболочки Windows Python
$AWS_ACCESS_KEY=my_access_key
$AWS_SECRET_ACCESS_KEY=my_secret_key
$python
$export AWS_ACCESS_KEY
$export AWS_SECRET_ACCESS_KEY
$python
>>>import os
>>>from boto import ec2
>>>auth = {"aws_access_key_id":os.environ.get("AWS_ACCESS_KEY"),
>>>"aws_secret_access_key":os.environ.get("AWS_SECRET_ACCESS_KEY")}
>>>conn = ec2.connect_to_region("us-east-1", **auth)
>>>conn.get_all_instances()
Сообщение об ошибке я получаю
boto.exception.EC2ResponseError: EC2ResponseError: 401 Unauthorized
AuthFailure
AWS was not able to validate the provided access credentials
Сначала я думал, что мои полномочия не были предусмотрены правильно. Однако в Windows:
C:\>SET AWS_ACCESS_KEY=my_access_key
C:\>SET AWS_SECRET_ACCESS_KEY=my_secret_key
C:\>python
>>>import os
>>>from boto import ec2
>>>auth = {"aws_access_key_id":os.environ.get("AWS_ACCESS_KEY"),
>>>"aws_secret_access_key":os.environ.get("AWS_SECRET_ACCESS_KEY")}
>>>conn = ec2.connect_to_region("us-east-1", **auth)
>>>conn.get_all_instances()
Возвращает все оговорки, как ожидалось. Я сравнил значение auth с обеих оболочек Python, и они одинаковы. Версии Python и boto выглядят одинаково. Я не пробовал использовать файл конфигурации boto, но я бы предпочел, чтобы это не было, поскольку это компонент сценария, который должен развертываться несколькими пользователями в моей организации.
Есть ли лучший способ пройти мою аутентификацию? Есть ли какой-то нюанс для Linux/Windows, который мне не хватает?
Начиная с boto 2.35.0 он использовал метод auth, более чувствительный к перекосам часов, и, как результат, если часы отличаются от EC2 более чем на пять минут, эта ошибка возникает - https://github.com/boto/boto/вопросы/2885 –