2016-12-26 1 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을 파일 파이썬에서 다음 명령을 실행중인이 버그를 찾는 데 매우 유용

뭔가를 삭제하는 것이 었습니다.

관련 문제