web-dev-qa-db-fra.com

Les ressources et les clients Boto3 sont-ils équivalents? Quand utiliser l'un ou l'autre?

Boto3 Mavens,

Quelle est la différence fonctionnelle, le cas échéant, entre les clients et les ressources?

Sont-ils fonctionnellement équivalents?

Dans quelles conditions choisiriez-vous d'invoquer une ressource Boto3 par rapport à un client (et vice-versa)?

Bien que je me sois efforcé de répondre à cette question par RTM ... regrette, comprendre la différence fonctionnelle entre les deux m'échappe.

Tes pensées?

Beaucoup, beaucoup merci!

Plane Wryter

48
Plane Wryter

Les ressources ne sont qu'une abstraction basée sur les ressources sur les clients. Ils ne peuvent rien faire que les clients ne peuvent pas faire, mais dans de nombreux cas, ils sont plus agréables à utiliser. Ils ont en fait un client intégré qu'ils utilisent pour faire des demandes. L'inconvénient est qu'ils ne prennent pas toujours en charge 100% des fonctionnalités d'un service.

23
Jordon Phillips

Créez toujours un resource. Il contient les méthodes importantes dont vous aurez besoin, telles que Table. Si vous avez besoin d'un objet client, il est prêt à l'emploi, demandez simplement .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