在VPC下从Lambda访问Api网关

时间:2019-02-26 19:32:54

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

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

我创建了简单的Lambda函数,该函数仅从ApiGateway端点获取数据并将其打印在控制台中。我的第一个Lambda函数没有任何VPC配置,并且获取操作像一个超级按钮一样工作。

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资源没有任何自定义域配置,并且由其他团队维护,因此我无法直接访问其配置

也许有人可以建议我该如何解决

1 个答案:

答案 0 :(得分:0)

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

让我知道是否有帮助。在不同情况下,我已经多次遇到该问题。