如何解决从Lambda调用外部api端点时出现ENOTFOUND错误
请提供以下建议,以便通过Lambda函数执行以下代码来对其进行更改。它在本地运行正常,但是在Lambda中执行时出现以下错误- {“ errno”:“ ENOTFOUND”,“代码”:“ ENOTFOUND”,“ syscall”:“ getaddrinfo”,“主机名”:“ https://api.taggun.io”}“,
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();
};
解决方法
它可能在本地运行而不是在部署时无法运行的一个原因可能是网络连接问题。如果您尝试访问的端点在专用网络上,则可能需要确保将lambda部署到具有与该专用网络的网络连接的vpc子网中。在这种情况下,这些docs显示将lambda部署到子网中的权限和过程。
,这意味着您的lambda无法达到https://api.taggun.io
您的lambda是否在VPC中?断言它已连接互联网
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。