从 AWS 开发工具包访问多个配置文件 - Python
Posted
技术标签:
【中文标题】从 AWS 开发工具包访问多个配置文件 - Python【英文标题】:Access multiple profiles from AWS SDK - Python 【发布时间】:2022-01-22 02:42:06 【问题描述】:我正在尝试访问保存在 aws 凭据文件中的不同配置文件的 S3 存储桶中的 csv 文件。如何在 python 中的 AWS SDK 中编写脚本以一次访问不同的配置文件。
类似的东西
import boto3
profile1 = boto3.<function>("profile_name1")
profile2 = boto3.<function>("profile_name2")
bucket1 = profile1.resource("S3")
bucket2 = profile2.resource("S3")
【问题讨论】:
【参考方案1】:您可以通过如下所示的 3 种方式执行此操作 -
方法 1:使用配置文件创建新会话
dev = boto3.session.Session(profile_name='dev')
方法2:在代码中更改默认会话的配置文件
boto3.setup_default_session(profile_name='dev')
方法 3:使用环境变量更改默认会话的配置文件
$ AWS_PROFILE=dev
>>> import boto3
>>> s3dev = boto3.resource('s3')
【讨论】:
【参考方案2】:您可以通过以下方式为不同的配置文件创建会话,
import boto3
session1 = boto3.Session(profile_name='profile_name1')
profile1_s3_client = session1.client('s3') // use this to access S3 for profile_name1
session2 = boto3.Session(profile_name='profile_name2')
profile2_s3_client = session2.client('s3') // use this to access S3 for profile_name2
【讨论】:
会话是否有超时时间? @Pooja 就像 aws cli 没有任何超时期限一样,这些会话也没有超时。只要您在配置文件中有凭据,就可以使用这些会话。 谢谢!这对我有用!【参考方案3】:您可以定义具有不同配置文件的会话,如下所述,其中对于每个配置文件,您将需要 access_key
并且在 IAM 用户编程访问的情况下不需要 secret_key. session_token
profile1 = boto3.session.Session(
profile_name='dev',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
aws_session_token=session_token
)
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。以上是关于从 AWS 开发工具包访问多个配置文件 - Python的主要内容,如果未能解决你的问题,请参考以下文章
从适用于 PHP 的 AWS 开发工具包中提取受保护的请求响应
使用 AWS 开发工具包从 Amazon S3 下载文件后如何删除文件
AWS S3存储桶Django 3.0用户配置文件图像上传访问错误