【发布时间】:2021-08-10 03:02:21
【问题描述】:
我知道这里已经有这类问题的几个答案,但似乎没有一个能涵盖我的场景,我似乎已经遵循了执行此 POST 请求所需的所有规则。
我在调用 API 的 AWS Lambda 函数中有以下 Node.js 代码(出于安全目的,主机和路径不是真实的)。
const https = require('https');
let host = 'api-thing.place.com';
let path = '/api/info?appname=appname';
exports.handler = () => {
let options = {
'method': 'POST',
'hostname': intHost,
'path': intPath,
'headers': {
'Content-Type': 'application/json',
'Accept': 'application/json'
}
};
let req = https.request(options, function(res) {
let results = [];
res.on("data", function(chunk) {
console.log('data');
results.push(chunk);
});
res.on("end", function() {
let body = Buffer.concat(results).toString();
});
res.on("error", function(error) {
console.error(error);
});
});
req.write(JSON.stringify({"food":"apple","drink":"water"}));
req.end();
};
这会产生错误:“getaddrinfo ENOTFOUND api-thing.place.com”。我在这里遗漏了什么或做错了什么?
【问题讨论】:
-
您的函数是否配置为在 VPC 中运行?
-
@MarkB 我不知道。这将如何影响此代码?
-
它会影响网络连接,这会导致您看到的错误,但如果您没有在 VPC 中运行,那么这不是问题。
-
@MarkB 在我在 VPC 中运行的假设世界中,我将如何解决这个问题?
-
这将需要更改 Lambda 函数的 VPC 子网部署设置,并且可能需要将 NAT 网关添加到 VPC 并修改 VPC 路由表。如果您不在 VPC 中运行,那么这些都无关紧要。只要您不在 VPC 中运行,该函数就应该默认可以访问 Internet。
标签: node.js amazon-web-services post https aws-lambda