我正在尝试使用Boto引用我的共享凭证文件在Mechanical Turk帐户上获取帐户余额。通过直接键入我的凭据,但是在使用配置文件名称时失败,我已成功完成此操作。
以下代码可以使用
import import boto.mturk.connection
sandbox_host = 'mechanicalturk.sandbox.amazonaws.com'
mturk = boto.mturk.connection.MTurkConnection(
aws_access_key_id = 'XXX',
aws_secret_access_key = 'XXX',
host = sandbox_host,
)
print mturk.get_account_balance() # [$10,000.00]
但是我想使用我在〜/ .aws / credentials中创建的配置文件:
[default]
aws_access_key_id = 'XXX'
aws_secret_access_key = 'XXX'
[iamuser]
aws_access_key_id = 'XXX'
aws_secret_access_key = 'XXX'
默认配置文件是主AWS账户,而iamuser是具有Full Mechanical Turk权限的IAM用户。我想用iamuser检查我的MTurk余额。正如我之前所说,以前使用显式键的代码工作正常。但是,我希望它以下列方式工作:
import import boto.mturk.connection
sandbox_host = 'mechanicalturk.sandbox.amazonaws.com'
mturk = boto.mturk.connection.MTurkConnection(
profile_name = 'iamuser',
host = sandbox_host,
)
print mturk.get_account_balance() # [$10,000.00]
当我尝试这个时,我收到以下错误:
Traceback(最近一次调用最后一次):文件“”,第1行,in 文件 “/usr/local/lib/python2.7/site-packages/boto/mturk/connection.py” 第74行,在get_account_balance中 ('OnHoldBalance',Price)])文件“/usr/local/lib/python2.7/site-packages/boto/mturk/connection.py”, 第838行,在_process_request中 return self._process_response(response,marker_elems)File“/usr/local/lib/python2.7/site-packages/boto/mturk/connection.py”, 第853行,在_process_response中 引发MTurkRequestError(response.status,response.reason,body)boto.mturk.connection.MTurkRequestError:MTurkRequestError:200 OK b6bdb875-b937-471c-bc00-86225e198ee2
AWS.NotAuthorized
的 请求中包含的标识无权使用此标识 AWSAccessKeyId(1482788645643 多个)
对此问题我感谢任何帮助。 感谢
答案 0 :(得分:0)
发现我的错误所在。显然,优先级是读取凭据。环境变量的优先级高于共享凭证。我在.bash_profile上声明了一些与我脚本中的变量冲突的环境变量。因此解决方案是从.bash_profile文件中删除它们
对于发现此错误非常有用的东西是在python上运行以下命令:
boto.set_stream_logger('boto')
这样可以更轻松地调试boto。