LoginSignup
3
1

More than 5 years have passed since last update.

[AWS] boto3のSessionでアクセス権を切り替える

Last updated at Posted at 2016-11-13

事前準備

IAMで、default, dev, prodユーザーを作成します。
devには、AmazonS3FullAccessのポリシーをアタッチし、S3へのアクセスを許可します。
S3に、bucket1, bucket2, bucket3を用意します。

credentialsファイルを利用

  • credentialsファイル

    ~/.aws/credentials or C:\Users\USER_NAME\.aws\credentials

    [default]
    aws_access_key_id = DEFAULT_ID
    aws_secret_access_key = SECRET_KEY1
    
    [dev]
    aws_access_key_id = DEV_ID
    aws_secret_access_key = SECRET_KEY2
    
    [prod]
    aws_access_key_id = PROD_ID
    aws_secret_access_key = SECRET_KEY3
    
  • Pythonプログラム

    import boto3.session
    
    dev_sess = boto3.session.Session(profile_name='dev')
    s3 = dev_sess.resource('s3')
    for bucket in s3.buckets.all():
        print(bucket.name)
    

    ※ profile_nameのデフォルトは、profile_name='default'です。

アクセスID、シークレットキーを直接指定

  • Pythonプログラム

    import boto3.session
    
    dev_sess = boto3.session.Session(
                                aws_access_key_id='DEV_ID',
                                aws_secret_access_key='SECRET_KEY2')
    s3 = dev_sess.resource('s3')
    for bucket in s3.buckets.all():
        print(bucket.name)
    

    ※ ID/パスワードがプログラムに埋め込まれています。実運用では避けましょう。

実行結果

  • 'dev'を指定
bucket1
bucket2
bucket3
  • 'prod'を指定
ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
  • 'foo'を指定
ProfileNotFound: The config profile (foo) could not be found
3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1