2015-10-27 13 views
18

Boto 3 pythonライブラリを使用していて、AWS CloudFrontに接続したいとします。 正しいAWSプロファイル(AWS資格情報)を指定する必要がありますが、公式のドキュメントを見ると、指定する方法はありません。boto3を使用してCloudFrontに接続する際にAWSプロファイルを選択する方法

私は、コードを使用してクライアントを初期化しています: client = boto3.client('cloudfront')

しかし、これは接続するためにデフォルトのプロファイルを使用して、それにつながります。 使用するプロファイルを指定できる方法が見つかりませんでした。

答えて

50

私はドキュメントがこれを行う方法を公開するには素晴らしいとは思いません。しかし、これはしばらくの間サポートされていましたが、このpull requestにはいくつかの詳細があります。だから、これを行うには3つの方法があります。

  1. プロファイル

    dev = boto3.session.Session(profile_name='dev') 
    
  2. 変更コードでデフォルトのセッションのプロファイルで新しいセッションを作成しますが

    boto3.setup_default_session(profile_name='dev') 
    
  3. 変更環境変数を使用するデフォルトセッションのプロファイル

    $ AWS_PROFILE=dev ipython 
    >>> import boto3 
    >>> s3dev = boto3.resource('s3') 
    
+1

はENV変数はAWS_PROFILEではないでしょうか? –

+0

ありがとう!これまでのところどこの情報も見つけられていないようだ。この作業をするにはステップ2が必要だったようです。ステップ1は何をしましたか? (dev変数が使用されていないか、他のものに渡されていないので) – Mark

+7

これはオプションであり、ステップではありません。最初のオプションでは、既定のセッションではなく新しいセッションを作成します。そのセッションでクライアントを作成するには、 'boto3.client( 's3')の代わりに' dev.client( 's3') ' –

7

名前のプロファイルを使用するために、これを行う 'DEV':

session = boto3.session.Session(profile_name='dev') 
s3 = session.resource('s3') 
for bucket in s3.buckets.all(): 
    print(bucket.name) 
関連する問題