He generado una URL prefirmada para un objeto en uno de mis cubos usando boto3:
s3.generate_presigned_url('get_object', Params = {'Bucket': 'https://s3.amazonaws.com/<>', 'Key': '<>.json'}, ExpiresIn = 100)
Ahora, ¿cómo get_object
en boto3? La referencia get_object de get_object
no especifica ningún argumento para una URL prefirmada.
Entonces, ¿cómo obtengo ese objeto de S3 usando su URL prefirmada en boto3?
Si tiene una URL prefirmada, no necesita boto; puede descargar el objeto usando cualquier biblioteca de agente de usuario HTTP.
Por el contrario, si tiene boto y las credenciales, no necesita una URL prefirmada.
Las URL prefirmadas están destinadas a permitir que alguien con credenciales permita que otra persona sin credenciales acceda a un recurso, sin exponer las credenciales a ellos.
Una URL prefirmada incluye el identificador de la clave de acceso y posiblemente un token de sesión, pero no el secreto de la clave de acceso, y es computacionalmente inviable para la ingeniería inversa... y en este sentido, no exponen el credenciales de una manera que permita a la entidad que posee la URL prefirmada usar las credenciales asociadas para cualquier otro propósito.
Puedes usar este código para obtener el resultado.
import boto3 s3_client = boto3.client('s3') resp = s3_client.generate_presigned_url('get_object', Params = {'Bucket': 'your-s3-bucket', 'Key': 'filepath/inside-bucket/filename.json'}, ExpiresIn = 100) print(resp)
si alguna duda por favor hágamelo saber.