ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在使用 Boto 3 python 库,并希望连接到 AWS CloudFront。我需要指定正确的 AWS 配置文件(AWS 凭证),但是查看官方文档,我看不出有什么方法可以指定它。

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

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

另请参阅:readdownload 来自 AWS S3 的带有配置文件的文件
您是否尝试过在代码中使用密钥? (您也可以使用 env var 从代码中隐藏它)client = boto3.client('s3', aws_access_key_id = '<access-key>', aws_secret_access_key = '<secret-key>')

A
Alex Ramos

我认为文档在揭露如何做到这一点方面并不出色。不过,它一直是受支持的功能,pull request 中有一些详细信息。

所以有三种不同的方法可以做到这一点:

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

env 变量不应该是 AWS_PROFILE 吗?
感谢那!到目前为止,似乎没有在任何地方找到该信息。看来我只需要第 2 步就可以完成这项工作。第 1 步做了什么? (因为没有使用 dev 变量或将其传递给其他任何东西?)
这些是选项,而不是步骤。在第一个选项中,您创建一个要使用的新会话而不是默认会话。因此,要使用该会话创建客户端,您需要执行 dev.client('s3') 而不是 boto3.client('s3')
题外话,ipython 对我也很有用。
使用 boto3.session.Session().available_profiles 获取配置文件列表 - 它是一个列表。然后使用你想要的@jordan-phillips。
H
He3lixxx

boto3 文档的 This section 很有帮助。

这对我有用:

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

在我与 Secrets Manager 的工作中,我真的认为这对我有用。但是 Secrets Manager + KMS = 不。
a
asmaier

执行此操作以使用名称为“dev”的配置文件:

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

M
MrKulli

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


这有效(解密)。将其拆分为两个命令并没有。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅