Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 从Lambda调用外部api终结点时发生ENOTFOUND错误_Node.js_Amazon Web Services_Aws Lambda - Fatal编程技术网

Node.js 从Lambda调用外部api终结点时发生ENOTFOUND错误

Node.js 从Lambda调用外部api终结点时发生ENOTFOUND错误,node.js,amazon-web-services,aws-lambda,Node.js,Amazon Web Services,Aws Lambda,请提供以下代码在Lambda函数中执行时需要更改的内容的建议。它在本地工作得非常好,但是在Lambda中执行时会出现以下错误- {“errno”:“ENOTFOUND”,“code”:“ENOTFOUND”,“syscall”:“getaddrinfo”,“hostname”:https://api.taggun.io“}” 它可能在本地工作而在部署时无法工作的一个原因可能是网络连接问题。如果您尝试访问的端点位于专用网络上,则您可能需要确保将lambda部署到与该专用网络具有网络连接的vpc子网

请提供以下代码在Lambda函数中执行时需要更改的内容的建议。它在本地工作得非常好,但是在Lambda中执行时会出现以下错误- {“errno”:“ENOTFOUND”,“code”:“ENOTFOUND”,“syscall”:“getaddrinfo”,“hostname”:https://api.taggun.io“}”


它可能在本地工作而在部署时无法工作的一个原因可能是网络连接问题。如果您尝试访问的端点位于专用网络上,则您可能需要确保将lambda部署到与该专用网络具有网络连接的vpc子网中。如果是这种情况,则这些子网将显示权限和进程用于将lambda部署到子网。

这意味着您的lambda无法到达
https://api.taggun.io

您的lambda是否在专有网络中?断言它有互联网连接

const API_KEY = 'XXxxxxxxxxxxxxxXXX';
/*const fs = require("fs");
const rp = require("request");*/
const https= require('https');
var AWS = require('aws-sdk');
var s3 = new AWS.S3();

exports.handler = function(event,context,callback){
    var srcBucket = event.Records[0].s3.bucket.name;
    var srcKey    = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, " "));
    var params = {Bucket: srcBucket, Key: srcKey};
    var origimage = s3.getObject(params).createReadStream();

    const formData = JSON.stringify({
    file: {
      value: origimage,
      }
    });
    const options = {
    hostname: "https://api.taggun.io",
    path: "/api/receipt/v1/simple/file",
    method: "POST",
    headers: {apikey:API_KEY}
  };
  const req = https.request(options,
      (res) => res.on("data", () => callback(null, "OK")));
  req.on("error", (error) => callback(JSON.stringify(error)));
  req.write(formData);
  req.end();
};