尝试使用Boto在MTurk中获得平衡,但得到“请求中包含的身份无权使用此AWSAccessKeyId”

时间:2016-12-26 21:54:14

标签: python amazon-web-services boto aws-sdk mechanicalturk

我正在尝试使用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   多个)

对此问题我感谢任何帮助。 感谢

1 个答案:

答案 0 :(得分:0)

发现我的错误所在。显然,优先级是读取凭据。环境变量的优先级高于共享凭证。我在.bash_profile上声明了一些与我脚本中的变量冲突的环境变量。因此解决方案是从.bash_profile文件中删除它们

对于发现此错误非常有用的东西是在python上运行以下命令:

boto.set_stream_logger('boto')

这样可以更轻松地调试boto。