首页 > 解决方案 > 未运行 Http 请求不确定是什么问题

问题描述

整晚都在调试,但我不知道为什么我的http请求没有被调用

return getWordDefinition(queryUrl).then(function(responseMsg) {
    //Perform some other business logic
},
  function(err) {
      console.log('Error Getting Definition: ' + err);
});     

我试图调用的函数:

function getWordDefinition(queryUrl){
    
    const options = {
    method: "GET"
  };

    return new Promise(function(resolve, reject) {
        const request = https.request(queryUrl, options, function(response) {

        console.log("STATUS CODE: " + response.statusCode);  // <------Not being called

        var data;
        response.on("data", function(chunk) {
          if (!data) {
            data = chunk;
          } else {
            data += chunk;
          }
        });
    
        response.on("end", function() {
          console.log("Data: " + JSON.stringify(data));
          resolve("Finished getting data");
        });
        
        request.on('error', (e) => {
          reject("ERROR ON REQUEST: " + e.message);
        });
        
        request.end();
        
      });
    });
  
}

这段代码在我的里面AWS lambda function,似乎超时了。我正在记录 http 请求的状态代码,但它从未在我的函数中被调用。我做错了什么?

标签: node.jsamazon-web-servicesaws-lambda

解决方案


您的 Lambda 正在发出 HTTP 请求,并且似乎超时?

以下是 3 个可能的原因,按可能性降序排列:

  1. 它在 VPC 中运行,并且您没有给 Lambda 提供通往互联网的路线
  2. HTTP 请求比 Lambda 超时时间长(默认为 3 秒)
  3. 您的异步/承诺代码有错误

请参阅#1的 VPC 连接功能的 Internet 和服务访问。


推荐阅读