Boto3资源和客户端是否相同?什么时候使用?

时间:2016-07-30 04:36:28

标签: python amazon-web-services boto3

Boto3 Mavens,

客户端和资源之间的功能差异是什么?

它们在功能上是否相同?

您在什么条件下会选择调用Boto3资源与客户端(反之亦然)?

虽然我已经尽力通过RTM回答这个问题......但遗憾的是,理解两者之间的功能差异使我望而却步。

你的想法?

很多,很多谢谢!

Plane Wryter

2 个答案:

答案 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(...)