Ich versuche zu verstehen, wann ich eine Ressource und wann ich einen Client verwenden soll .
Die Definitionen in boto3-Dokumenten machen nicht wirklich klar, wann die Verwendung der einen oder anderen vorzuziehen ist.
Ich versuche zu verstehen, wann ich eine Ressource und wann ich einen Client verwenden soll .
Die Definitionen in boto3-Dokumenten machen nicht wirklich klar, wann die Verwendung der einen oder anderen vorzuziehen ist.
Antworten:
boto3.resource
ist eine High-Level-Serviceklasse boto3.client
.
Es soll verbundene Ressourcen anhängen, unter denen Sie später andere Ressourcen verwenden können, ohne die ursprüngliche Ressourcen-ID anzugeben.
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 sind auf niedriger Ebene, Sie haben kein "Objekt der Einstiegsklasse", daher müssen Sie für jede von Ihnen ausgeführte Aktion explizit die genauen Ressourcen angeben, mit denen es verbunden ist.
Es kommt auf die individuellen Bedürfnisse an. Es werden boto3.resource
jedoch nicht alle boto3.client
Funktionen eingeschlossen, sodass Sie manchmal anrufen boto3.client
oder verwenden müssen boto3.resource.meta.client
, um die Aufgabe zu erledigen.