使用boto3连接CloudFront时,如何选择AWS配置文件

我正在使用Boto 3 python库,并想连接到AWS CloudFront。 我需要指定正确的AWS配置文件(AWS凭据),但查看官方文档,我认为没有办法指定它 我正在使用代码初始化客户端: client = boto3.client('cloudfront') < / p > 但是,这会导致它使用默认配置文件进行连接。 我找不到一个方法,我可以指定使用哪个配置文件

192288 次浏览

我认为这些医生并没有很好地揭示如何做到这一点。它已经被支持了一段时间,然而,在这个把请求中有一些细节。

有三种不同的方法:

选项A)使用概要文件创建一个新的会话

    dev = boto3.session.Session(profile_name='dev')

选项B)在代码中更改默认会话的配置文件

    boto3.setup_default_session(profile_name='dev')

选项C)使用环境变量更改默认会话的概要文件

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

使用名称为'dev'的配置文件:

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

boto3文档的本节是有帮助的。

以下是对我有效的方法:

session = boto3.Session(profile_name='dev')
client = session.client('cloudfront')
只要在客户端调用之前将概要文件添加到会话配置。 boto3.session.Session(profile_name='YOUR_PROFILE_NAME').client('cloudwatch') < / p >

使用会话boto3.session.Session:

import boto3
aws_session = boto3.session.Session(profile_name='dev')
s3 = aws_session.resource('s3')

2-使用资源boto3.resource:

import boto3
boto3.setup_default_session(profile_name='dev')
s3 = boto3.resource('s3')

3- OR,将环境变量AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY传递给boto3。

import boto3
aws_session = boto3.Session(
aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY,
aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY,
)
s3 = aws_session.resource('s3')