मैं एक लैम्ब्डा समारोह का उपयोग कर नोड 12.
मैं की जरूरत है जोड़ने के लिए एक नया कनेक्शन के लिए एक Redis डेटाबेस की मेजबानी में एडब्ल्यूएस elasticache उपयोग.
दोनों कर रहे हैं में एक निजी VPC और सुरक्षा समूहों/सबनेट रहे हैं ठीक से कॉन्फ़िगर है ।
समाधान:
globals.js:
const redis = require('redis');
const redisClient = redis.createClient(
`redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}/${process.env.REDIS_DB}`,
);
redisClient.on('error', (err) => {
console.log('REDIS CLIENT ERROR:' + err);
});
module.exports.globals = {
REDIS: require('../helpers/redis')(redisClient),
};
index.js (बाहर हैंडलर):
const { globals } = require('./config/globals');
global.app = globals;
const lambda_handler = (event, context, callback) => { ... }
exports.handler = lambda_handler;
helpers/redis/index.js:
const get = require('./get');
module.exports = (redisClient) => {
return {
get: get(redisClient)
};
};
helpers/redis/get.js:
module.exports = (redisClient) => {
return (key, cb) => {
redisClient.get(key, (err, reply) => {
if (err) {
cb(err);
} else {
cb(null, reply);
}
});
};
};
समारोह कॉल:
app.REDIS.get(redisKey, (err, reply) => {
console.log(`REDIS GET: ${err} ${reply}`);
});
समस्या: बढ़ रही है जब लैम्ब्डा मध्यांतर से अधिक मूल्य के लिए Redis मध्यांतर, मैं इस त्रुटि मिलती है:
REDIS ग्राहक त्रुटि:त्रुटि: Redis कनेक्शन के लिए ... विफल रहा है - कनेक्ट ETIMEDOUT ...
इसके अलावा:
मैं करने की कोशिश की quiting/कनेक्शन बंद करने के बाद प्रत्येक लेन-देन:
module.exports = (redisClient) => {
return (cb) => {
redisClient.quit((err, reply) => {
if (err) {
cb(err);
} else {
cb(null, reply);
}
});
};
};
app.REDIS.get(redisKey, (err, reply) => {
console.log(`REDIS GET: ${err} ${reply}`);
if (err) {
cb(err);
} else {
if (reply) {
app.REDIS.quit(() => {
cb()
});
}
}
})
त्रुटि:
REDIS मिल: AbortError: प्राप्त नहीं किया जा सकता है संसाधित. कनेक्शन पहले से ही बंद कर दिया ।
अतिरिक्त नोट्स:
- मैं का उपयोग करने के लिए कॉलबैक, यह है क्यों मैं पास के लोगों में ऊपर के उदाहरण
- मैं का उपयोग कर रहा हूँ
"redis": "^3.0.2"
- यह नहीं है एक कॉन्फ़िगरेशन समस्या के रूप में कैश किया गया था पहुँचा सौ में समय की एक छोटी अवधि के समय, लेकिन यह तो देने शुरू कर दिया मध्यांतर त्रुटियों.
- सब कुछ काम करता है सामान्य रूप से स्थानीय स्तर पर