es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Credenciales faltantes en la configuración al intentar colocar objeto en el cubo S3.

Tengo un servicio de Express que intenta escribir un objeto en un bucket de s3 pero obtengo el siguiente error:

Faltan credenciales en la configuración

Supongo mi rol de AWS localmente que establece mis credenciales en .aws/credentials luego en mi Dockerfile las estoy copiando en mi contenedor.

La documentación dice:

El SDK detecta automáticamente las credenciales de AWS configuradas como variables en su entorno y las usa para solicitudes del SDK, eliminando la necesidad de administrar credenciales en su aplicación. Las variables de entorno que establece para proporcionar sus credenciales son:

AWSACCESSKEYID

AWSSECRETACCESSKEY

AWSSessionToken (opcional)

¿Así que no tengo que administrar manualmente mis credenciales al usar el sdk?

Actualmente el código para escribir en el bucket s3:

import s3 from ‘aws-sdk/clients/s3’;

const s3Client = new s3({region: process.env[‘region’]});

async upload() {
const params = {
Bucket: process.env[‘bucket’],
Key: ‘test.json’,
Body: somejsonfile
}

const res = s3Client.upload(params).promise();
return results;
}

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error “Credenciales faltantes en la configuración” indica que el SDK de AWS no puede localizar las credenciales necesarias para autenticar la solicitud de API. Aunque estés ejecutando un rol de instancia en la instancia de EC2, aún debes proporcionar al SDK las credenciales necesarias para manejar solicitudes.

    El SDK de AWS puede detectar automáticamente las credenciales de AWS establecidas como variables de entorno, lo que elimina la necesidad de que administres las credenciales en tu aplicación. Sin embargo, en tu caso, necesitas configurar manualmente las credenciales debido a la forma en que las estás copiando en el contenedor.

    Para configurar el SDK con las credenciales, puedes configurar el objeto AWS.config de la siguiente manera:

    import s3 from 'aws-sdk/clients/s3';
    
    const s3Client = new s3({ region: process.env ['region']});
    AWS.config.update({
         accessKeyId: process.env['AWS_ACCESS_KEY_ID'],
         secretAccessKey: process.env['AWS_SECRET_ACCESS_KEY']
    });
    
    async upload() {
         const params = {
             Bucket: process.env['bucket'],
             Key: 'test.json',
             Body: somejsonfile
         }
    
         const res = s3Client.upload(params).promise();
         return results;
    }
    

    El código anterior actualiza el objeto AWS.config con las credenciales necesarias para que el SDK pueda acceder al bucket de S3 sin problemas. Las variables de entorno AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY necesitan estar configuradas en el entorno donde se ejecuta el proceso para que el SDK pueda reconocerlas.

    Siguiendo este enfoque, proporcionarás las credenciales necesarias al SDK para que pueda funcionar sin encontrar el error “Credenciales faltantes en la configuración”.

Comments are closed.