boto3 S3に接続するときに資格情報を指定する方法は?
Botoでは、次のような方法でS3に接続するときに資格情報を指定していました。
import boto
from boto.s3.connection import Key, S3Connection
S3 = S3Connection( settings.AWS_SERVER_PUBLIC_KEY, settings.AWS_SERVER_SECRET_KEY )
その後、S3を使用して操作を実行できます(この場合、バケットからオブジェクトを削除します)。
Boto3では、私が見つけたすべての例は次のとおりです。
import boto3
S3 = boto3.resource( 's3' )
S3.Object( bucket_name, key_name ).delete()
資格情報を指定できなかったため、すべての試行がInvalidAccessKeyId
エラーで失敗します。
Boto3で資格情報を指定するにはどうすればよいですか?
session を作成できます:
import boto3
session = boto3.Session(
aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY,
aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY,
)
次に、そのセッションを使用してS3リソースを取得します。
s3 = session.resource('s3')
以下のように、新しいセッションでclient
を直接取得できます。
s3_client = boto3.client('s3',
aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY,
aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY,
region_name=REGION_NAME
)
Boto3.resource()を使用しながら、資格情報を保存する方法は多数あります。私は自分でAWS CLIメソッドを使用しています。完璧に機能します。