Wann wird ein Boto3-Client verwendet und wann wird eine Boto3-Ressource verwendet?

Antworten:

81

boto3.resourceist 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.resourcejedoch nicht alle boto3.clientFunktionen eingeschlossen, sodass Sie manchmal anrufen boto3.clientoder verwenden müssen boto3.resource.meta.client, um die Aufgabe zu erledigen.

Mootmoot
quelle
2
Vielen Dank, dies hilft ein wenig, die Dokumentation selbst ist etwas vage, aber ich denke, der Schlüssel ist, dass Clients bestimmten API-Aufrufen zugeordnet sind, die Sie ausführen können.
aquil.abdullah
1
Ich initialisiere meinen Client, indem ich Anmeldeinformationen als Parameter an den Client übergebe. import boto3 client = boto3.client ('s3', aws_access_key_id = ACCESS_KEY, aws_secret_access_key = SECRET_KEY). Kann ich etwas Ähnliches für Ressourcen tun? Ich kann dies nicht in der Dokumentation finden.
Naveen
4
Das Beispiel zeigte nichts, was den Unterschied zeigt.
Nabin
2
Wer ein umfassendes Beispiel braucht, schaut bitte hier: stackoverflow.com/questions/42809096/…
mootmoot
1
Hat jemand gute Vorschläge zur Dokumentation über die "Ressourcen" -Schnittstellen? Die BOTO3-Dokumente konzentrieren sich hauptsächlich auf die "Client" -Schnittstellen auf niedriger Ebene.
Gye