Tengo algunos problemas para acceder a mis imágenes S3 a través del formulario de solicitud de mi servidor express.
Tengo una base de datos mongo donde almaceno información de texto para los elementos en mi página web y guardo la clave de imagen que envío a mi depósito S3. Ahora, cuando trato de obtener todos los elementos y las imágenes png respectivas, me aparece este error:
...aws-sdk\lib\request.js:31 throw err; ^ AccessDenied: Access Denied ...
incluso si mi autorización de usuario en S3 es buena.
Debido a que necesito obtener todos los elementos para un componente productPage, hago lo siguiente:
//ROUTER FILE router.get("/cust/test", async (req, res) => { try { let tests; tests = await Test.find(); tests.map((t) => { const png = t.png; const readStream = s3DwnPng(png); readStream.pipe(res); console.log(png); }); res.status(200).json(tests); console.log(tests); } catch (err) { res.status(500).json(err); } }); //S3 FILE function s3DwnPng(fileKey) { const dwnParams = { Bucket: process.env.AWS_BUCKET_NAME, Key: `png/${fileKey}`, }; return s3.getObject(dwnParams).createReadStream(); } exports.s3DwnPng = s3DwnPng;
pero esto no funciona para mí. ¿Alguien podría ayudarme?
¿Y merece la pena seguir accediendo a las imágenes pasando por mi servidor? Estoy considerando cambiar a una política pública con acceso CORS privado para aligerar la carga en mi servidor, ¿es realmente seguro hacerlo?