首页 > 解决方案 > boto3.Session().client 和 boto3.client 有什么区别?

问题描述

a和 和有什么不一样b

>>> import boto3
>>> a = boto3.Session().client("s3")
>>> b = boto3.client("s3")
>>> a == b
False

两者似乎都有效,但对于变体,a我收到以下错误mypy

模块没有属性“会话”

这似乎适用于所有服务(s3、ssm、sts、...)。

如果两者相同,是否可能取决于版本?

标签: pythonamazon-web-servicesboto3

解决方案


boto3.client("s3")使用默认会话创建客户端 。这与

boto3.DEFAULT_SESSION.client('s3')

boto3.Session() 创建新会话。由于没有给出任何参数,因此创建的对象将等同于默认会话。通常,如果您想使用新的凭据配置文件,您会创建新会话,例如

boto3.Session(profile_name='non-default-profile')

a == b是不同的,因为这些是 的不同实例Client


推荐阅读