Tengo este código en mi servidor express que genera una URL prefirmada de S3 usando NodeJS AWS SDK:
const { S3Client } = require("@aws-sdk/client-s3"); const { getSignedUrl } = require("@aws-sdk/s3-request-presigner"); app.get('/getS3PresignedUrl', async (req, res) => { const s3 = new S3Client({ region: 'ap-southeast-2', credentials: { accessKeyId: accessKey.data.access_key, secretAccessKey: accessKey.data.secret_key } }); const presignedS3Url = await getSignedUrl(s3, new PutObjectCommand({ Bucket: 'xxx', Key: 'test.txt', }) ); res.send({ status: true, message: 'success', data: { s3Url: presignedS3Url } }); })Una vez que obtengo la URL, la uso y la coloco en curl o en Postman, pero ambos obtienen 403 InvalidAccessKeyId. Por ejemplo:
No entiendo por qué falla con 403 cuando la url S3 se genera con éxito. Tenga en cuenta que uso esa URL de inmediato y no excedo el límite de caducidad de 900 segundos.
¿Alguna idea de cuál es el problema aquí?