【问题标题】:Access Api Gateway from Lambda under VPCVPC下从Lambda访问API网关
【发布时间】:2019-07-20 10:15:29
【问题描述】:

我需要从ApiGateway 端点获取一些数据,然后根据响应将这些数据存储在数据库中。

我创建了简单的Lambda 函数,它只从ApiGateway 端点获取数据并在控制台中打印。我的第一个 Lambda 函数没有任何 VPC 配置,并且 fetch 操作就像一个魅力。

const fetch = require('node-fetch');

exports.handler = async () => {
  const data = await fetch("https://<<ag-api-key>>.execute-api.us-east-1.amazonaws.com/v1/data");
  const response = await data.json();
  console.log(data, response);
}

由于我需要将从端点接收到的数据存储到在 VPC 下运行的数据库中,我决定将 Lambda 放在同一个 VPC 中(此 vpc 已配置 Internet 网关和其他东西以访问 Internet)。 结果fetch 操作开始失败,403 响应代码和{"message":"Forbidden"} 响应正文。

Api Gateway 资源没有任何自定义域配置并由其他团队维护,因此我无法直接访问其配置

任何人都可以建议我如何解决这个问题

【问题讨论】:

    标签: javascript amazon-web-services aws-lambda aws-api-gateway vpc


    【解决方案1】:
    1. 安全组,检查 443 端口是否打开
    2. 检查 API 网关上的 CORS 设置。
    3. 尝试使用 Postman/Fiddler 或任何其他测试工具访问 API 网关,以确保您的 API 网关在线并且您可以获得所需的响应。
    4. 如果您使用的是私有 API 网关(听起来您正在使用公共查看 URL),您将需要一些标头数据和不同的 URL。如果需要,我可以指导您完成。如果我是你,我会避免使用私有 API 网关。

    如果有任何帮助,请告诉我。我在不同的情况下多次遇到这个问题。

    【讨论】:

    • 我遇到了同样的问题,但我的 VPC 无法访问互联网。当我为其创建端点时,如果标记了私有 DNS,我会收到一个禁止响应。如果我不标记它,我会收到超时响应。我想知道你们做了什么来解决这个问题。谢谢
    • @MatheusMaximo 嗨,Matheus,我也遇到了同样的问题,不知道您是如何解决问题的?
    • @HalilİbrahimÖzdoğan 有一长串设置需要遵循并为此设置 Lambda。你可以在这里找到它:blog.theodo.com/2020/01/internet-access-to-lambda-in-vpc
    猜你喜欢
    • 2018-06-23
    • 2020-03-22
    • 2022-11-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2019-06-09
    • 2017-02-08
    • 2020-09-28
    相关资源
    最近更新 更多