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

Nad*_*bar 92 python amazon-web-services boto3

我正在使用Boto 3 python库,并希望连接到AWS CloudFront.我需要指定正确的AWS Profile(AWS Credentials),但查看官方文档,我认为无法指定它.

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

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

Jor*_*ips 167

我认为文档在揭露如何做到这一点上并不精彩.但是,它已经被支持了一段时间,并且这个拉取请求中有一些细节.所以有三种方法可以做到这一点:

a)使用配置文件创建新会话

    dev = boto3.session.Session(profile_name='dev')
Run Code Online (Sandbox Code Playgroud)

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

    boto3.setup_default_session(profile_name='dev')
Run Code Online (Sandbox Code Playgroud)

c)使用环境变量更改默认会话的配置文件

    $ AWS_PROFILE=dev ipython
    >>> import boto3
    >>> s3dev = boto3.resource('s3')
Run Code Online (Sandbox Code Playgroud)

  • 这些是选择,而不是步骤.在第一个选项中,您将创建要使用的新会话而不是默认会话.因此,要使用该会话创建客户端,您可以执行类似`dev.client('s3')`而不是`boto3.client('s3')的操作. (29认同)
  • 使用`boto3.session.Session().available_profiles`获取配置文件列表 - 它是一个列表.然后使用你想要的@ jordan-phillips. (5认同)
  • 环境变量不应该是 AWS_PROFILE 吗? (2认同)

asm*_*ier 24

这样做是为了使用名为'dev'的配置文件:

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


mgi*_*gig 15

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

这对我有用:

session = boto3.Session(profile_name='dev')
client = session.client('cloudfront')
Run Code Online (Sandbox Code Playgroud)


小智 10

1-使用会话boto3.session.Session

import boto3
aws_session = boto3.session.Session(profile_name='dev')
s3 = aws_session.resource('s3')
Run Code Online (Sandbox Code Playgroud)

2-使用资源boto3.resource

import boto3
boto3.setup_default_session(profile_name='dev')
s3 = boto3.resource('s3')
Run Code Online (Sandbox Code Playgroud)

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')
Run Code Online (Sandbox Code Playgroud)

  • 现在是`aws_session == boto3.Session(profile_name='dev')`。不是`aws_session = boto3.session.Session(profile_name='dev')。[参考](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#shared-credentials-file) (3认同)

MrK*_*lli 8

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