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.
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.
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.
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.
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.
@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 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.
3 votes
Une autre réponse stackoverflow.com/a/42818143