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.
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.
¿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.
Respuestas:
boto3.resource
es una clase de servicios de alto nivel envolventeboto3.client
.Está destinado a adjuntar recursos conectados en los que luego puede usar otros recursos sin especificar el ID de recurso original.
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 laboto3.client
funcionalidad, por lo que en algún momento debe llamarboto3.client
o usarboto3.resource.meta.client
para hacer el trabajo.fuente