尝试使用Boto在MTurk中获得平衡,但Get“请求中包含的标识未被授权使用此AWSAccessKeyId”

2024-04-28 22:42:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Boto引用我的共享凭据文件来获取我的Mechanical Turk帐户上的accountbalance。我已经成功地通过直接输入我的凭证来完成,但是在使用配置文件名时失败了。在

下面的代码可以工作

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中创建的配置文件:

^{pr2}$

默认配置文件是主AWS帐户,而IAM用户是具有完全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 (most recent call last): File "", line 1, in File "/usr/local/lib/python2.7/site-packages/boto/mturk/connection.py", line 74, in get_account_balance ('OnHoldBalance', Price)]) File "/usr/local/lib/python2.7/site-packages/boto/mturk/connection.py", line 838, in _process_request return self._process_response(response, marker_elems) File "/usr/local/lib/python2.7/site-packages/boto/mturk/connection.py", line 853, in _process_response raise MTurkRequestError(response.status, response.reason, body) boto.mturk.connection.MTurkRequestError: MTurkRequestError: 200 OK b6bdb875-b937-471c-bc00-86225e198ee2AWS.NotAuthorizedThe identity contained in the request is not authorized to use this AWSAccessKeyId (1482788645643 s)

我希望在这个问题上有任何帮助。 谢谢


Tags: inimportawshostgetresponseusrline
1条回答
网友
1楼 · 发布于 2024-04-28 22:42:14

找到了我的窃听器。显然,读凭证有一个优先级。环境变量的优先级高于共享凭据。我在.bash_profile上声明了一些环境变量,这些变量与脚本中的变量冲突。所以解决方案是从.bash_配置文件中删除它们

在python上运行以下命令对查找此bug非常有用:

boto.set_stream_logger('boto')

这使得boto的调试更加容易。在

相关问题 更多 >