web-dev-qa-db-ja.com

Boto3のリソースとクライアントは同等ですか?どちらを使用するか?

Boto3 Mavens、

クライアントとリソースの機能的な違いはありますか?

機能的に同等ですか?

Boto3リソースとクライアント(およびその逆)を呼び出す条件は何ですか?

私はRTMによってこの質問に答えようと努力しましたが...後悔していますが、この2つの機能の違いを理解することは私を避けます。

あなたの考え?

多く、多くありがとう!

Plane Wryter

48
Plane Wryter

リソースは、クライアントに対するリソースベースの抽象化にすぎません。クライアントができないことは何もできませんが、多くの場合、使いやすいです。実際には、要求を行うために使用する組み込みクライアントがあります。欠点は、サービスの機能のすべてを常にサポートしているわけではないことです。

23
Jordon Phillips

常に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(...)
2
hlidka