ฉันมี lambda ฟังก์ชันใช้โหนดอายุแค่ 12 แน่นอน
ฉันต้องการที่จะเพิ่มการเชื่อมต่อใหม่เพื่อเป็น Redis ฐานข้อมูลภาพที่เก็บไว้ใน AWS ElastiCache.
ทั้งสองอยู่ในหนึ่งส่วนตัว VPC และความปลอดภัยกลุ่มข่าว/subnets คือปรับแต่งอย่างเหมาะสม
ทางออก:
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}`);
});
ปัญหา: ตอนที่เพิ่มขึ้น lambda หมดเวลาให้มีค่ามากกว่า 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"
- มันไม่ใช่การปรับแต่งปัญหาเหมือแคชนเข้าไปร้อยครั้งในช่วงเวลาเล็กน้องของเวลาแต่มันก็เริ่มให้หมดเวลาเกิดข้อผิดพลาด.
- ทุกอย่างที่ทำงานปกติในท้องถิ่น