目前,我正在尝试从在 Windows 8 操作系统中运行的 Ubuntu 14 VM 连接到 AWS。在 Ubuntu shell 中,我运行:
$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()
按预期返回所有预留。我比较了两个 Python shell 的 auth 值,它们是相同的。Python 和 boto 版本似乎是相同的。我没有尝试使用 boto 配置文件,但我不希望这样做,因为这是脚本的一个组件,应该可以由我的组织中的多个用户部署。
有没有更好的方法来通过我的身份验证?我错过了 Linux/Windows 的一些细微差别吗?