जब मैं अपनी परियोजना में एडब्ल्यूएस प्रमाण-पत्रों का उपयोग करने की कोशिश कर रहा हूं तो यह एक त्रुटि देता है मुझे समाधान खोजने में मुश्किल हो रही है और जब मैं उसी फ़ाइल में प्रमाण-पत्रों का उपयोग कर रहा हूं तो यह काम करता है लेकिन जब मैं उपयोग करने का प्रयास कर रहा हूं। मेरा प्रयास कोड है
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)
})
})
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)
})
})
यदि आपके पास 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
मैंने देखा है कि आप अपनी 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"
}
इन्हें एडब्ल्यूएस द्वारा अलग-अलग मानों के रूप में आपूर्ति की जाती है और इन्हें दो अलग-अलग पर्यावरण चर द्वारा दर्शाया जाना चाहिए। शायद यह आपका मुद्दा है?
मैंने env vars . के लिए एडब्ल्यूएस गाइड से सटीक नामों का पालन करने के बाद काम किया
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN (Optional)
ध्यान दें कि ~/.aws/credentials में चर नाम केस संवेदी होते हैं। यही मेरी समस्या का कारण बना
मैं एक apiVersion
निर्दिष्ट करके इस समस्या को ठीक करने में सक्षम था
AWS.config.update({
region: 'MY_REGION',
apiVersion: 'latest',
credentials: {
accessKeyId: 'MY_ACCESS_KEY',
secretAccessKey: 'MY_SECRET_KEY'
}
})
डिफ़ॉल्ट रूप से, 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 अधिक जानकारी के लिए।
~/.aws/credentials
सेट अप हो
आप केवल एक समर्पित 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 दस्तावेज़ से क्रेडेंशियल लोड करना ब्राउज़र स्क्रिप्ट में समर्थित नहीं है।
मुझे इसी तरह की समस्या का सामना करना पड़ा, इसलिए मैंने कुछ वीडियो देखे और दस्तावेज़ों का एक समूह पढ़ा, 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"
}
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
node.js
Node.js एक घटना-आधारित, गैर-अवरोधक, अतुल्यकालिक I / O रनटाइम है जो Google के V8 जावास्क्रिप्ट इंजन और libuv लाइब्रेरी का उपयोग करता है। इसका उपयोग उन अनुप्रयोगों को विकसित करने के लिए किया जाता है जो क्लाइंट पर और साथ ही सर्वर साइड पर जावास्क्रिप्ट को चलाने की क्षमता का भारी उपयोग करते हैं और इसलिए कोड के पुन: प्रयोज्य और संदर्भ स्विचिंग की कमी से लाभान्वित होते हैं।