Python 尝试使用Boto在MTurk中获得平衡,但获得;请求中包含的标识无权使用此AWSAccessKeyId“;

Python 尝试使用Boto在MTurk中获得平衡,但获得;请求中包含的标识无权使用此AWSAccessKeyId“;,python,amazon-web-services,boto,aws-sdk,mechanicalturk,Python,Amazon Web Services,Boto,Aws Sdk,Mechanicalturk,我正在尝试使用Boto引用我的共享凭据文件来获取Mechanical Turk帐户上的AccountBalance。我通过直接键入凭据成功地完成了此操作,但在使用配置文件名时失败 下面的代码可以工作 import import boto.mturk.connection sandbox_host = 'mechanicalturk.sandbox.amazonaws.com' mturk = boto.mturk.connection.MTurkConnection( aws_acces

我正在尝试使用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中创建的配置文件:

[default]
aws_access_key_id = 'XXX'
aws_secret_access_key = 'XXX'

[iamuser]
aws_access_key_id = 'XXX'
aws_secret_access_key = 'XXX'
默认配置文件是AWS主帐户,而iamuser是具有完全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]
当我尝试此操作时,会出现以下错误:

回溯(最近一次调用):文件“”,第1行,在 文件 “/usr/local/lib/python2.7/site packages/boto/mturk/connection.py”, 第74行,获取账户余额 ('OnHoldBalance',Price)])文件“/usr/local/lib/python2.7/site packages/boto/mturk/connection.py”, 第838行,正在处理的请求 返回self.\u process\u response(response,marker\u elems)文件“/usr/local/lib/python2.7/site packages/boto/mturk/connection.py”, 第853行,进程内响应 将MTurkRequestError(response.status、response.reason、body)boto.mturk.connection.MTurkRequestError:MTurkRequestError:200确定 b6bdb875-b937-471c-bc00-86225e198ee2AWS.未授权 请求中包含的标识未被授权使用此 AWSAccessKeyId(1482788645643 (s)

在这个问题上,我将不胜感激。
谢谢你找到了我的错误所在。显然,凭证的读取有一个优先级。环境变量的优先级高于共享凭据。我在.bash_配置文件中声明了一些环境变量,这些变量与我脚本中的变量冲突。因此,解决方案是从.bash_配置文件中删除它们

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

boto.set_stream_logger('boto')

这使得调试boto更加容易。

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

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

boto.set_stream_logger('boto')

这使得调试boto更加容易。

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