我正在使用Boto 3 python库,并想连接到AWS CloudFront。 我需要指定正确的AWS配置文件(AWS凭证),但查看官方文档,我没有办法指定它。

我正在初始化客户端使用的代码: 客户端= boto3.client('cloudfront')

但是,这会导致它使用默认配置文件进行连接。 我找不到可以指定使用哪个概要文件的方法。


当前回答

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

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

其他回答

只需在客户端调用之前将概要文件添加到会话配置。 boto3.session.Session (profile_name = YOUR_PROFILE_NAME) .client(监测)

boto3文档的这一部分很有帮助。

以下是对我有效的方法:

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

使用Session boto3.session.Session:

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

使用资源boto3.resource:

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

3-或者,将环境变量AWS_ACCESS_KEY_ID和AWS_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')

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

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

我认为这些医生并没有很好地揭示如何做到这一点。不过,它已经成为一个受支持的特性有一段时间了,在这个拉请求中有一些细节。

有三种不同的方法:

选项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')