Estoy tratando de entender cuándo debo usar un recurso y cuándo debo usar un cliente .
Las definiciones proporcionadas en los documentos de boto3 realmente no dejan claro cuándo es preferible usar una u otra.
Respuestas:
boto3.resource
es una clase de servicios de alto nivel envolvente boto3.client
.
Está destinado a adjuntar recursos conectados en los que luego puede usar otros recursos sin especificar el ID de recurso original.
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 son de bajo nivel, no tienes un "objeto de clase de entrada", por lo que debes especificar explícitamente los recursos exactos a los que se conecta para cada acción que realizas.
Depende de las necesidades individuales. Sin embargo, boto3.resource
no incluye toda la boto3.client
funcionalidad, por lo que en algún momento debe llamar boto3.client
o usar boto3.resource.meta.client
para hacer el trabajo.