从 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用户配置文件图像上传访问错误

如何使用rclone从AWS S3迁移到IBM COS - part 2 - 同步腾讯云对象存储

从多个进程访问 Amazon S3 文件

如何从 c# 中的 aws cognito 获取用户属性