Node.js 从Lambda调用外部api终结点时发生ENOTFOUND错误
请提供以下代码在Lambda函数中执行时需要更改的内容的建议。它在本地工作得非常好,但是在Lambda中执行时会出现以下错误- {“errno”:“ENOTFOUND”,“code”:“ENOTFOUND”,“syscall”:“getaddrinfo”,“hostname”:https://api.taggun.io“}”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部署到与该专用网络具有网络连接的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();
};