97 votes

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

J'essaie de comprendre quand je dois utiliser un Ressources et quand je dois utiliser un Client .

Les définitions fournies dans la documentation de boto3 ne précisent pas vraiment quand il est préférable d'utiliser l'un ou l'autre.

3 votes

Une autre réponse stackoverflow.com/a/42818143

102voto

mootmoot Points 1485

boto3.resource est une classe de services de haut niveau qui entoure boto3.client .

Il est destiné à attacher des ressources connectées sous lesquelles vous pouvez ensuite utiliser d'autres ressources sans spécifier l'identifiant de la ressource originale.

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

D'autre part, les boto3.client sont de bas niveau, vous n'avez pas d'"objet de classe d'entrée", 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.resource n'emballe pas tous les boto3.client de sorte que, parfois, vous devez appeler boto3.client ou utiliser boto3.resource.meta.client pour faire le travail.

2 votes

Merci, cela aide un peu, la documentation elle-même est un peu vague, mais je suppose que la clé est que les clients correspondent à des appels API spécifiques que vous pouvez faire.

1 votes

J'initialise mon client en passant les informations d'identification comme paramètres au client. import boto3 client = boto3.client( 's3', aws_access_key_id=ACCESS_KEY, aws_secret_access_key=SECRET_KEY ). Puis-je faire quelque chose de similaire pour les ressources ? Je ne trouve pas cela dans la documentation.

0 votes

@Naveen Il n'est pas recommandé de passer une clé API codée en dur. Si vous insistez, vous pouvez utiliser boto3.session et instancier votre ressource à partir de la session. Il existe de nombreux exemples à ce sujet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X