[英]Unable to have AWS lambda wait till asynchronous request call is completed
我在理解AWS Lambda Node 8.10中的異步調用時遇到了相同/相似的問題。 下面是我的代碼。 它運行,但不是我想要的。 我正在嘗試獲取HTTPS標頭和關聯的SSL證書。 如果我運行一次lambda,則它可以成功運行,但是沒有數據。 如果我一遍又一遍地對其進行測試,則返回的返回值之一將getPeerCertificate輸出到日志。
這是我撓頭的地方...有一個定義為res
的回調函數。 我相信發生的是在從request
調用回調之前,lambda消失了。 我正在努力使lambda保持生存狀態,以等待請求返回。 我正在嘗試將其最小化(沒有其他模塊)。 那里有誰可以幫助您?
exports.handler = async (event) => {
console.log(event);
var https = require('https');
var options = {
method: 'HEAD',
hostname: 'google.com',
port: 443,
path: '/'
};
try {
var req = https.request(options, (res) => {
console.log(res.connection.getPeerCertificate());
});
req.end();
} catch (err) {
console.error(err);
}
};
您應該這樣使用lambda的回調函數:
const https = require('https');
exports.handler = (event, context, callback) => {
console.log(event);
const options = {
method: 'HEAD',
hostname: 'google.com',
port: 443,
path: '/'
};
const req = https.request(options, (res) => {
res.on('data', (d) => {
callback(null, d);
});
});
req.on('error', (e) => {
callback(e);
});
req.end();
}
另一個解決方案應該是顯式聲明一個諾言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.