web-dev-qa-db-fra.com

Quand utiliser un client boto3 et quand utiliser une ressource boto3?

J'essaie de comprendre quand je devrais utiliser un Ressource et quand je devrais utiliser un Client .

Les définitions fournies dans boto3 docs n'indiquent pas vraiment quand il est préférable d'utiliser l'une ou l'autre.

48
aquil.abdullah

boto3.resources est une classe de services de haut niveau qui englobe boto3.client.

C'est un moyen d'attacher des ressources connectées sous lequel vous pouvez utiliser ultérieurement d'autres ressources sans spécifier l'id de ressource d'origine.

import boto3
s3 = boto3.resource("s3")
bucket = s3.Bucket('mybucket')

# now bucket is "attached" the S3 bucket name "mybucket"
print(bucket)
# s3.Bucket(name='mybucket')

print(dir(bucket))
#show you all class method action you may perform

OTH, boto3.client sont de bas niveau, vous n’avez pas d’objet "entry class", vous devez donc spécifier explicitement les ressources exactes auxquelles il se connecte pour chaque action que vous effectuez.

Cela dépend des besoins individuels. Cependant, boto3.resources n'emballe pas toutes les fonctionnalités de boto3.client, vous devez donc parfois appeler boto3.client ou utiliser boto3.resource.meta.client () pour exécuter le travail.

50
mootmoot