¿Cuándo usar un cliente boto3 y cuándo usar un recurso boto3?

Respuestas:

86

boto3.resourcees 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.resourceno incluye toda la boto3.clientfuncionalidad, por lo que en algún momento debe llamar boto3.cliento usar boto3.resource.meta.clientpara hacer el trabajo.

mootmoot
fuente
2
Gracias, esto ayuda un poco, la documentación en sí es un poco vaga, pero supongo que la clave es que los clientes se asignan a llamadas API específicas que puede realizar.
aquil.abdullah
1
Estoy inicializando a mi cliente pasando credenciales como parámetros al cliente. importar boto3 client = boto3.client ('s3', aws_access_key_id = ACCESS_KEY, aws_secret_access_key = SECRET_KEY). ¿Puedo hacer algo similar con el recurso? No puedo encontrar esto en la documentación.
Naveen
4
El ejemplo no mostró nada que muestre la diferencia.
Nabin
3
Si alguien necesita un ejemplo completo, eche un vistazo aquí: stackoverflow.com/questions/42809096/…
mootmoot
1
¿Alguien tiene buenas sugerencias sobre la documentación sobre las interfaces de "recursos"? Los documentos de BOTO3 se centran principalmente en las interfaces de "cliente" de bajo nivel.
Gye