Cuando intento cargar las credenciales de AWS en mi proyecto, me devuelve un error.
Cuando uso credenciales en texto sin formato, todo funciona bien, pero cuando intento usar variables de entorno, no funciona.
Mensaje de error. :
Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1Aquí está mi código probado:
const AWS = require('aws-sdk'); const SESConfig = { apiVersion: "2010-12-01", accessKeyId: process.env.AWS_SECRET_KEY, accessSecretKey: process.env.AWS_SECRET_KEY, region: "us-east-1" } AWS.config.update(SESConfig); var sns = new AWS.SNS() var sns = new AWS.SNS(); function sendSMS(to_number, message, cb) { sns.publish({ Message: message, Subject: 'Admin', PhoneNumber:to_number }, cb); } // Example const PhoneNumberArray = ['any mobile number'] PhoneNumberArray.forEach(number => { sendSMS(number, "Lorem Ipsum is simply dummy text of the printing and typesetting industry.", (err, result)=>{ console.log("RESULTS: ",err,result) }) })De forma predeterminada, el SDK detecta las credenciales de AWS establecidas en su entorno y las utiliza para firmar solicitudes a AWS. De esa manera, no necesita administrar las credenciales en sus aplicaciones.
Unix:
$ export AWS_ACCESS_KEY_ID="your_key_id" $ export AWS_SECRET_ACCESS_KEY="your_secret_key"Ventanas:
> set AWS_ACCESS_KEY_ID="your_key_id" > set AWS_SECRET_ACCESS_KEY="your_secret_key" también puede agregar $ export AWS_SESSION_TOKEN='your_token' (opcional)
Consulte aws-sdk para obtener más detalles.
o cree un archivo ~/.aws/credentials y agregue:
[default] aws_access_key_id = <YOUR_ACCESS_KEY_ID> aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY>Consulte aws para obtener más detalles.
Noté que está configurando su accessKeyId y secretAccessKey en la misma variable de entorno.
const SESConfig = { apiVersion: "2010-12-01", accessKeyId: process.env.AWS_SECRET_KEY, // should be: process.env.AWS_ACCESS_ID secretAccessKey: process.env.AWS_SECRET_KEY, region: "us-east-1" }Estos se proporcionan como valores separados por aws y deben estar representados por dos variables de entorno separadas. ¿Quizás este es tu problema?
Puede intentar crear un AWS_PROFILE con las credenciales si tiene instalada la CLI de AWS.
$ aws configure --profile testuser AWS Access Key ID [None]: 1234 AWS Secret Access Key [None]: 1234 Default region name [None]: us-east-1 Default output format [None]: textDespués de eso, puede configurar AWS_PROFILE como variable de entorno.
linux / mac
export AWS_PROFILE=testuserventanas
setx AWS_PROFILE testuserDespués de eso, debería poder ejecutar su programa y AWS obtendrá las credenciales de su perfil. De esta manera, no tiene que guardar sus credenciales en .ENV. Si lo hace, recuerde agregarlo en .gitignore.
https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html