[AWS] boto3のSessionでアクセス権を切り替える
事前準備
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
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'です。
-
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
bucket1
bucket2
bucket3
ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
ProfileNotFound: The config profile (foo) could not be found
Author And Source
この問題について([AWS] boto3のSessionでアクセス権を切り替える), 我々は、より多くの情報をここで見つけました https://qiita.com/hitomatagi/items/9aabb5522737dce023cb著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .