Я создал API-шлюз, который направляет к функции AWS Lambda (узел 8.10).Функция Lambda отправляет запрос POST стороннему API и должна возвращать ответ (статус и сообщение) обратно в API GATEWAY.Происходит то, что я могу успешно вызывать сторонний API (это почтовый запрос, чтобы я мог проверить, что Lambda выполняет свою работу), но когда я отправляю ответ обратно в API GATEWAY, он не может отправить обновленный ответ.
Причина этого в том, что Lambda вызывает callback (null, response) почти сразу, тогда как ответ от стороннего API приходит позже, и, следовательно, объект ответа обновляется позже (я могу подтвердить это через консольные журналы).Я написал один обратный вызов (null, response) внутри функции обратного вызова, как видно из фрагмента прикрепленного кода, но, похоже, API GATEWAY рассматривает самый ранний ответ обратного вызова.Как я могу убедиться, что функция LAMBDA отправляет только обновленный ответ.Ниже приведен прикрепленный код:
const https = require('https');
exports.handler = async (event, context, callback) => {
var body = JSON.parse(event.body);
var postData = JSON.stringify(body);
const options = {
method: 'POST',
hostname: app_url
path: path_value
port: 443,
headers: {
'accept': 'application/json',
'Content-Type': 'application/json',
'Content-Length': postData.length,
'Authorization': auth_token_value
}
};
var response = {};
var dataStr = "";
const req = https.request(options, (res) => {
response.statusCode = res.statusCode;
response.headers = res.headers;
res.on('data', (d) => {
dataStr += d;
});
res.on('end', () => {
response.body = dataStr;
console.log(response);
callback(null, response);
});
});
req.write(postData);
req.end();
console.log(response);
callback(null, response);
}