2016-12-26 6 views
1

Botoを共有資格証明ファイルに参照してMechanical TurkアカウントでGetAccountBalanceを実行しようとしています。自分の資格情報を直接入力することで成功しましたが、プロファイル名を使用すると失敗しました。Botoを使用してMTurkで残高を取得しようとしましたが、リクエストに含まれているIDにこのAWSAccessKeyIdを使用する権限がありません。

次のコードは、

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 /資格証明書で、私が作成したプロファイルを使用したいしかし:

[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 (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-86225e198ee2 AWS.NotAuthorized The identity contained in the request is not authorized to use this AWSAccessKeyId (1482788645643 s)

私はこの問題上の任意の助けをいただければ幸いです。 ありがとう

+0

私のバグはどこにありましたか?明らかに資格情報が読み取られる優先順位があります。環境変数は、共有クレデンシャルよりも優先順位が高くなります。 .bash_profileに宣言されている環境変数がいくつかありましたが、これはスクリプトのものと衝突していました。だから解決策は、.bash_profileファイルからそれらを消去することでした。 –

答えて

0

私のバグはどこにあったのですか?明らかに資格情報が読み取られる優先順位があります。環境変数は、共有クレデンシャルよりも優先順位が高くなります。 .bash_profileに宣言されている環境変数がいくつかありましたが、これはスクリプトのものと衝突していました。デバッグのbotoへの道が容易になります

boto.set_stream_logger('boto') 

:だからソリューションは、.bash_profileのファイルからのpythonで次のコマンドを実行していたこのバグを見つけるために非常に有用だった

何かを、それらを消去しました。

関連する問題