Boto3 Mavens,
客户端和资源之间的功能差异是什么?
它们在功能上是否相同?
您在什么条件下会选择调用Boto3资源与客户端(反之亦然)?
虽然我已经尽力通过RTM回答这个问题......但遗憾的是,理解两者之间的功能差异使我望而却步。
你的想法?
很多,很多谢谢!
Plane Wryter
答案 0 :(得分:23)
资源只是基于资源的客户端抽象。他们不能做客户不能做的任何事情,但在许多情况下他们使用起来更好。他们实际上有一个嵌入式客户端,用于发出请求。缺点是它们并不总是支持100%的服务功能。
答案 1 :(得分:2)
始终创建resource
。它具有您需要的重要方法,例如Table
。如果您碰巧需要一个client
对象,它就可以使用了,只需要.meta.client
:
import boto3
dynamodb = boto3.resource(service_name='dynamodb', endpoint_url='http://localhost:8000')
try:
dynamodb.create_table(...)
except dynamodb.meta.client.exceptions.ResourceInUseException:
logging.warn('Table already exists')
table = dynamodb.Table(table_name)
response = table.get_item(...)