【问题标题】:AWS Lambda https request yields "getaddrinfo ENOTFOUND" errorAWS Lambda https 请求产生“getaddrinfo ENOTFOUND”错误
【发布时间】: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


【解决方案1】:

如果您在创建 VPC 时遵循此 tutorial 并且仍然遇到问题,只需为运行 lambda 函数的 VPC 编辑 DHCP 选项集。您可以使用流行的 DNS,如 Google 或 Cloudflare。

为 lambda 创建 VPC 以访问互联网的简化步骤是:

  1. 在 AWS 管理控制台中打开 VPC 向导。
  2. 选择具有公共和私有子网的 VPC。新的公有子网和私有子网,包括其关联的互联网网关和 NAT 网关,将显示在 Amazon VPC 控制台中。
  3. 将 AWSLambdaVPCAccessExecutionRole 添加到 Lambda 的权限
  4. 将创建的 VPC 添加到 lambda 并将私有子网分配给 lambda

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
猜你喜欢
  • 2021-05-30
  • 2019-02-15
  • 2022-11-04
  • 2018-04-02
  • 2018-07-25
  • 2021-05-10
  • 1970-01-01
  • 2021-04-22
  • 2019-09-19
相关资源
最近更新 更多