Saltar al contenido

¿Cómo obtener la URL de un archivo en AWS S3 usando aws-sdk?

Solución:

Los SDK no contienen un método conveniente para hacer esto. Sin embargo, cuando llamó a PutObject, usted proporcionó el depósito y la clave del objeto y eso es todo lo que necesita. Simplemente puede combinarlos para hacer la URL del objeto, por ejemplo:

  • https://bucket.s3.amazonaws.com/key

Entonces, por ejemplo, si su balde es pablo y la clave del objeto es dogs/toto.png, usar:

  • https://pablo.s3.amazonaws.com/dogs/toto.png

Tenga en cuenta que las teclas S3 no comienzan con un / prefijo. Una clave es de la forma dogs/toto.png, y no /dogs/toto.png.

Para buckets específicos de una región, consulte Trabajo con buckets de Amazon S3 y estilos de URL de AWS S3. Reemplazar s3 con s3.<region>.amazonaws.com o s3-<region>.amazonaws.com en las URL anteriores, por ejemplo:

  • https://seamus.s3.eu-west-1.amazonaws.com/dogs/setter.png (con punto)
  • https://seamus.s3-eu-west-1.amazonaws.com/dogs/setter.png (con guión)

Si está utilizando IPv6, el formulario de URL general será:

  • https://BUCKET.s3.dualstack.REGION.amazonaws.com

Para algunos depósitos, puede usar las URL de estilo de ruta más antiguas. Las URL de estilo de ruta están obsoletas y solo funcionan con depósitos creados el 30 de septiembre de 2020 o antes. Se usan así:

  • https://s3.amazonaws.com/bucket/key
  • https://s3.amazonaws.com/pablo/dogs/toto.png
  • https://s3.eu-west-1.amazonaws.com/seamus/dogs/setter.png
  • https://s3.dualstack.REGION.amazonaws.com/BUCKET

Actualmente, existen problemas de certificados TLS y SSL que pueden requerir algunos depósitos con puntos (.) en su nombre para acceder a través de URL de estilo de ruta. AWS planea abordar esto. Vea el anuncio de AWS.

Nota: Orientación general sobre claves de objetos donde ciertos caracteres necesitan un manejo especial. Por ejemplo, el espacio se codifica en + (signo más) y el signo más se codifica en% 2B. También aquí.

en caso de que tenga los objetos s3bucket y filename y desee extraer la URL, aquí hay una opción:

function getUrlFromBucket(s3Bucket,fileName){
    const {config :{params,region}} = s3Bucket;
    const regionString = region.includes('us-east-1') ?'':('-' + region)
    return `https://${params.Bucket}.s3${regionString}.amazonaws.com/${fileName}`
};

Puedes hacer otra llamada con esto:

var params = {Bucket: 'bucket', Key: 'key'};
s3.getSignedUrl('putObject', params, function (err, url) {
  console.log('The URL is', url);
});
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *