जब मैं अपनी परियोजना में एडब्ल्यूएस प्रमाण-पत्रों का उपयोग करने की कोशिश कर रहा हूं तो यह एक त्रुटि देता है मुझे समाधान खोजने में मुश्किल हो रही है और जब मैं उसी फ़ाइल में प्रमाण-पत्रों का उपयोग कर रहा हूं तो यह काम करता है लेकिन जब मैं उपयोग करने का प्रयास कर रहा हूं। मेरा प्रयास कोड है

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)
      })
  })
51
singh singh 4 अप्रैल 2020, 16:23
Tidak dapat mencegah tindakan default bilah spasi di firefox
 – 
Rodrigo M
4 अप्रैल 2020, 16:46
कॉन्फ़िगरेशन में अनुपलब्ध क्रेडेंशियल, यदि AWS_CONFIG_FILE का उपयोग कर रहे हैं, तो AWS_SDK_LOAD_CONFIG=1 सेट करें
 – 
singh singh
4 अप्रैल 2020, 16:50
धन्यवाद। क्या आप सुनिश्चित हैं कि क्रेडेंशियल मान परिवेश में सेट हैं?
 – 
Rodrigo M
4 अप्रैल 2020, 17:43
हाँ मैंने पर्यावरण में क्रेडेंशियल जोड़े हैं
 – 
singh singh
4 अप्रैल 2020, 18:18
क्या आपको कोई समाधान मिला?
 – 
Gianmarco
2 जुलाई 2020, 22:52

9 जवाब

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)
      })
  })
4
diegofcornejo 5 अप्रैल 2020, 18:16

यदि आपके पास AWS CLI स्थापित है, तो आप क्रेडेंशियल के साथ AWS_PROFILE बनाने का प्रयास कर सकते हैं।

$ 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]: text

उसके बाद आप AWS_PROFILE को पर्यावरण चर के रूप में सेट कर सकते हैं।

लिनक्स / मैक

export AWS_PROFILE=testuser

विंडोज

setx AWS_PROFILE testuser

उसके बाद आपको अपना प्रोग्राम चलाने में सक्षम होना चाहिए और AWS को आपकी प्रोफ़ाइल से क्रेडेंशियल मिल जाएंगे। इस तरह आपको अपने क्रेडेंशियल्स को .ENV में सेव करने की जरूरत नहीं है। यदि आप करते हैं, तो इसे .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

8
John Gherga 7 अप्रैल 2020, 12:40
एक आकर्षण, सरल और महान स्पष्टीकरण की तरह काम किया !!!
 – 
Learner
9 जुलाई 2020, 12:07

मैंने देखा है कि आप अपनी accessKeyId और secretAccessKey को एक ही परिवेश चर पर सेट कर रहे हैं।

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

इन्हें एडब्ल्यूएस द्वारा अलग-अलग मानों के रूप में आपूर्ति की जाती है और इन्हें दो अलग-अलग पर्यावरण चर द्वारा दर्शाया जाना चाहिए। शायद यह आपका मुद्दा है?

17
GwenM 11 मार्च 2021, 03:16

मैंने env vars . के लिए एडब्ल्यूएस गाइड से सटीक नामों का पालन करने के बाद काम किया

https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-node-credentials-environment.html

AWS_ACCESS_KEY_ID  
AWS_SECRET_ACCESS_KEY  
AWS_SESSION_TOKEN (Optional)  
2
wly185 11 अप्रैल 2021, 17:14
इससे मेरी समस्या हल हो गई। धन्यवाद। लेकिन जब मैं नोड सर्वर को रीफ्रेश करता हूं, तो हमेशा चल रहा है क्यों? और जब मैं छवि को हिट करता हूं और अन्य अप्रयुक्त दस्तावेज़ भी छवि के साथ सहेजे जाते हैं। उन दस्तावेज़ों से कैसे छुटकारा पाएं और टर्मिनल में हमेशा चल रहे एडब्ल्यूएस सर्वर से छुटकारा पाएं?
 – 
Dulal Sandip
27 सितंबर 2021, 16:41

ध्यान दें कि ~/.aws/credentials में चर नाम केस संवेदी होते हैं। यही मेरी समस्या का कारण बना

1
Neal Heneghan 8 मार्च 2021, 17:18

मैं एक apiVersion निर्दिष्ट करके इस समस्या को ठीक करने में सक्षम था

AWS.config.update({
  region: 'MY_REGION',
  apiVersion: 'latest',
  credentials: {
    accessKeyId: 'MY_ACCESS_KEY',
    secretAccessKey: 'MY_SECRET_KEY'
  }
})
1
jeninja 13 अक्टूबर 2021, 00:03

डिफ़ॉल्ट रूप से, SDK आपके परिवेश में सेट किए गए AWS क्रेडेंशियल का पता लगाता है और AWS के अनुरोधों पर हस्ताक्षर करने के लिए उनका उपयोग करता है। इस तरह आपको अपने एप्लिकेशन में क्रेडेंशियल प्रबंधित करने की आवश्यकता नहीं है।

यूनिक्स:

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

खिड़कियाँ:

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

आप $ export AWS_SESSION_TOKEN='your_token' (वैकल्पिक) भी जोड़ सकते हैं

इसके लिए aws-sdk देखें अधिक जानकारी।

या एक ~/.aws/credentials फ़ाइल बनाएँ और जोड़ें:

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

देखें aws अधिक जानकारी के लिए।

41
GwenM 20 अक्टूबर 2020, 12:48
यह तब भी होगा जब हमारे पास ~/.aws/credentials सेट अप हो
 – 
Jun711
19 नवम्बर 2021, 04:25

आप केवल एक समर्पित config.json फ़ाइल के माध्यम से क्रेडेंशियल लोड कर सकते हैं।

{
    "accessKeyId": "<YOUR_ACCESS_KEY_ID>", 
    "secretAccessKey": "<YOUR_SECRET_ACCESS_KEY>", 
    "region": "eu-west-3"
}

फिर AWS लोड कमांड का उपयोग करें

AWS.config.loadFromPath('./config.json');

इस मामले में आपको AWS कॉन्फिग AWS.config.update(...); को अपडेट करने की आवश्यकता नहीं होगी क्योंकि यह सीधे छिपकली से किया जाता है।

ध्यान दें कि:

JSON दस्तावेज़ से क्रेडेंशियल लोड करना ब्राउज़र स्क्रिप्ट में समर्थित नहीं है।

0
amarinediary 18 अगस्त 2021, 12:02

मुझे इसी तरह की समस्या का सामना करना पड़ा, इसलिए मैंने कुछ वीडियो देखे और दस्तावेज़ों का एक समूह पढ़ा, dotenv फ़ाइल में IAM उपयोगकर्ता बनाने का प्रयास करें जिसे आप खाते तक पहुँचने की अनुमति देना चाहते हैं AWS_PROFILE="exampleProfile" यह वही उपयोगकर्ता होना चाहिए जो आपको अपनी एक्सेस कुंजी और रहस्य मिला है, फिर आवश्यकता है इसलिए इसे कुछ इस तरह दिखना चाहिए।

const SESConfig = {
   apiVersion: "2010-12-01",
   profile:process.env.AWS_PROFILE,
   accessKeyId: process.env.AWS_ACCESS_KEY,
   accessSecretKey: process.env.AWS_SECRET_KEY,
   region: "us-east-1"
}
0
Stefano Sansone 28 अक्टूबर 2021, 12:58