2017-03-14 19 views
1

マイライブラリには、任意のAWS-のIoTアカウントに接続する必要があるので、私はAWSクライアントをインスタンス化するとき、私は必要な資格情報を渡している:boto3 AWSクライアントが引数を無視していますか?

client = boto3.client('iot', 
         aws_access_key_id=ACCESS_KEY, 
         aws_secret_access_key=SECRET_KEY,...) 

boto3ドキュメント(以下抜粋)によると、資格情報が渡されましたこの方法では、他のすべての資格情報を上書きする必要がありますしかし、この呼び出しはBoto3から次のログメッセージを生成します。

"Found credentials in shared credentials file: ~/.aws/credentials" 

私は本当には、ユーザーが自分のシステム上で設定されているために起こるたかもしれないものは何でも資格情報boto3ピックアップしたくない- 私はそれだけで使いたいです私はboto3.client()に渡しているものです。どのようにこれを確保するためのアイデア?

boto3ドキュメントの抜粋:私のテストから、

The order in which Boto3 searches for credentials is: 

1. Passing credentials as parameters in the boto.client() method 
2. Passing credentials as parameters when creating a Session object 
3. Environment variables 
4. Shared credential file (~/.aws/credentials) 
5. AWS config file (~/.aws/config) 
6. Assume Role provider 
7. Boto2 config file (/etc/boto.cfg and ~/.boto) 
8. Instance metadata service on an Amazon EC2 instance that has an IAM role configured. 
+0

アクセスキーと秘密鍵が有効であることを確認してください。 – mootmoot

答えて

0

boto3.client(..)aws_access_key_id & aws_secret_access_keyパラメータを渡す、それは彼らが間違っている場合でも、それらを受け入れ、ファイルから、他の資格情報をロードしません。 API呼び出しを送信すると、NoCredentialsError例外を返します。

boto3.client('iot')既定のプロファイルがシステムに存在する場合、「共有資格情報ファイルが見つかりました:〜/ .aws/credentials」が表示されます。

明示的にクレデンシャルパラメータを指定する限り、間違ったアカウントで実行されたコールから保護する必要があります。

関連する問題