web-dev-qa-db-ja.com

AWS_CONFIG_FILEを使用している場合は、設定に認証情報がありません。AWS_SDK_LOAD_CONFIG= 1を設定します

プロジェクトでAws資格情報を使用しようとするとエラーが発生し、解決策を見つけるのが困難になり、同じファイルで資格情報を使用すると機能しましたが、使用しようとすると、ここで試したコードがあります

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)
      })
  })
10
singh singh

Dotenvをインストールする

npm install dotenv --save

.envファイルを作成して変数を追加する

AWS_ACCESS_KEY=1234567890
AWS_SECRET_KEY=XXXXXXXXXXXXXXXXXXX

プロジェクトにdotenvを読み込む

require('dotenv').config();

完全なコード

require('dotenv').config();
const AWS = require('aws-sdk');
const SESConfig = {
    apiVersion: "2010-12-01",
    accessKeyId: process.env.AWS_ACCESS_KEY,
    accessSecretKey: process.env.AWS_SECRET_KEY,
    region: "us-east-1"
}
AWS.config.update(SESConfig);
var sns = new AWS.SNS();

function sendSMS(to_number, message, cb) {

    sns.publish({
        Message: message,
        Subject: 'Admin',
        PhoneNumber:to_number
    }, cb);

  }

  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)
      })
  })
1
diegofcornejo

accessKeyIdsecretAccessKeyを同じ環境変数に設定しているようです。

const SESConfig = {
    apiVersion: "2010-12-01",
    accessKeyId: process.env.AWS_SECRET_KEY,      // should be:  process.env.AWS_ACCESS_ID
    accessSecretKey: process.env.AWS_SECRET_KEY,  
    region: "us-east-1"
}

これらはawsによって個別の値として提供され、2つの個別の環境変数で表す必要があります。多分これはあなたの問題ですか?

1
GatesKennedy