Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1

When I am trying to load AWS credentials in my project it gives back an error.

When using credentials in plain text everything works good but when I am trying to use environment variables it's not working.

Error message. :

Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1 

Here is my tried code :

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)       })   })   
like image 517
singh singh Avatar asked Apr 04 '20 13:04

singh singh


2 Answers

By default, the SDK detects AWS credentials set in your environment and uses them to sign requests to AWS. That way you don’t need to manage credentials in your applications.

Unix:

$ export AWS_ACCESS_KEY_ID="your_key_id" $ export AWS_SECRET_ACCESS_KEY="your_secret_key" 

Windows:

> set AWS_ACCESS_KEY_ID="your_key_id" > set AWS_SECRET_ACCESS_KEY="your_secret_key" 

you can also add $ export AWS_SESSION_TOKEN='your_token' (optional)

See aws-sdk for more details.

or create a ~/.aws/credentials file and add:

[default] aws_access_key_id = <YOUR_ACCESS_KEY_ID> aws_secret_access_key = <YOUR_SECRET_ACCESS_KEY> 

See aws for more details.

like image 50
GwenM Avatar answered Sep 20 '22 09:09

GwenM


I noticed that you are setting your accessKeyId and secretAccessKey to the same environment variable.

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" }  

These are supplied as separate values by aws and should be represented by two separate environment variables. Maybe this is your issue?

like image 23
GatesKennedy Avatar answered Sep 21 '22 09:09

GatesKennedy