Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.2K
Vistas
AWS S3 SDK V3 para Node.js - GetObjectCommand v/s getSignedUrl

Estoy creando una aplicación web en la que necesito permitir que los usuarios carguen documentos en su cuenta y también leer todos los documentos que han cargado. Además, me gustaría permitir que los usuarios también puedan cargar una foto de perfil. Para manejar el almacenamiento de archivos, elegí AWS S3.

Sin embargo, tengo muchos problemas con el SDK (v3). Tenga en cuenta que nunca usé la versión anterior (v2). Instalé 2 paquetes a través de npm, @aws-sdk/client-s3 y @aws-sdk/s3-request-presigner . Tengo problemas para encontrar la documentación adecuada para todas las funciones que necesito. Los documentos con los que me he encontrado no son exactamente aptos para principiantes y no entran en muchos detalles al explicar todas las funciones. Por ejemplo, en el caso de GetObjectCommand , puedo obtener una respuesta, pero no estoy seguro de cómo acceder realmente al cuerpo y usar los contenidos.

Tampoco estoy seguro de si debería usar GetObjectCommand o getSignedUrl para mi caso de uso. Por contexto, estoy usando Express para construir mi servidor.

Mis preguntas -

  1. ¿Hay alguna manera más fácil de interactuar con S3 para mi aplicación en lugar de usar el SDK? Por más fácil me refiero a documentado correctamente.
  2. ¿Estoy mirando la documentación incorrecta? ¿Existen otros recursos que hagan esto más simple?
  3. ¿Cuáles son las situaciones en las que uno usaría getSignedUrl sobre GetObjectCommand para leer y luego procesar archivos almacenados para una aplicación web?

Estaré extremadamente agradecido por cualquier y toda ayuda.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

  1. Ver respuesta a la pregunta 2.
  2. https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/s3-example-creating-buckets.html - la documentación es quizás más amigable para principiantes
  3. Depende de su caso de uso. GetObjectCommand es el método sencillo, pero lo más probable es que se encuentre con problemas de autorización. Una URL prefirmada es una URL que puede proporcionar a sus usuarios para otorgar acceso temporal a un objeto S3 específico.

Aquí hay un código para GetObjectCommand usando getSignedUrl (también actualicé el documento).

 const { S3, CreateBucketCommand, PutObjectCommand, GetObjectCommand, DeleteObjectCommand, DeleteBucketCommand, } = require("@aws-sdk/client-s3"); const { getSignedUrl } = require("@aws-sdk/s3-request-presigner"); const fetch = require("node-fetch"); // Set parameters // Create random names for the Amazon Simple Storage Service (Amazon S3) bucket and key. const params = { Bucket: `test-bucket-${Math.ceil(Math.random() * 10 ** 10)}`, Key: `test-object-${Math.ceil(Math.random() * 10 ** 10)}`, Body: "BODY", Region: "REGION" }; // Create an Amazon S3 client object. const s3Client = new S3({ region: params.Region }); const run = async () => { // Create an Amazon S3 bucket. try { console.log(`Creating bucket ${params.Bucket}`); const data = await s3Client.send( new CreateBucketCommand({ Bucket: params.Bucket }) ); console.log(`Waiting for "${params.Bucket}" bucket creation...\n`); } catch (err) { console.log("Error creating bucket", err); } // Put the object in the Amazon S3 bucket. try { console.log(`Putting object "${params.Key}" in bucket`); const data = await s3Client.send( new PutObjectCommand({ Bucket: params.Bucket, Key: params.Key, Body: params.Body, }) ); } catch (err) { console.log("Error putting object", err); } // Create a presigned URL. try { // Create the command. const command = new GetObjectCommand(params); // Create the presigned URL. const signedUrl = await getSignedUrl(s3Client, command, { expiresIn: 3600, }); console.log( `\nGetting "${params.Key}" using signedUrl with body "${params.Body}" in v3` ); console.log(signedUrl); const response = await fetch(signedUrl); console.log( `\nResponse returned by signed URL: ${await response.text()}\n` ); } catch (err) { console.log("Error creating presigned URL", err); } }; run();
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda