API网关和Lambda函数:第一种方法

时间:2016-09-11 21:32:31

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

我是API网关和AWS Lambda的新手,我正在尝试在具有以下元素的场景中使用它们:

  • 具有私有子网和公有子网的VPC
  • 安装了灯泡的AMI EC2(免费等级)
  • 一个带有一些文字的简单index.html页面(某些内容为"这是一个测试页面")

我想要做的是能够通过使用API​​网关和Lambda来http://myprivateIp/myexample/index.hml,因为它似乎在AWS文档中提出。然后,我重新使用了基本的Hello World lambda示例(AWS蓝图之一)作为我的第一个lambda函数,并按照向导中的要求包含了VPC详细信息(也包含私有子网)。我还创建了一个带有一个资源的示例API(在本例中为myexample)和带有Lambda函数集成类型和Hello World函数的Get方法。根据文档,我创建了正确的权限(http://docs.aws.amazon.com/apigateway/latest/developerguide/create-lambda-roles.html)。我已经从我的API测试了GET方法,它正确地返回响应" Hello World"根据AWS预先存在的蓝图。我知道这可能听起来像一个非常天真的问题,但我不确定我是否真的证明我能打到我的VPC?我希望能够从我的index.html页面返回示例文本,例如,这可能吗?在这种特定情况下,我是否误解了AWS lambda的用途?

感谢您的帮助,

修改

所以,我在Node JS 4.3中整理了以下内容:

'use strict';
console.log('We are about to send a Get Request');

exports.handler = function(event, context, callback) {
  var http = require("http")
  var request = http.get("http://domain/example/index.html")
  console.log('"This is my request":"' + request + '"');
  callback(null, "The URL is succesfully retrieved")
};

测试成功运行,我是否正确地说它确实证明我可以在VPC上运行一个页面?

2 个答案:

答案 0 :(得分:1)

您是对的 - 只要您的Lambda函数配置为在同一个VPC中运行,您就可以通过Lambda函数向VPC中的端点发出HTTP请求。

因此,您可以使用API​​网关调用Lambda并从VPC内的HTTP端点代理响应。

API网关无法直接在VPC中调用HTTP端点,因此建议您使用Lambda的当前方法。

答案 1 :(得分:-2)

您可以在Lambda函数中将EC2与私有IP连接。这意味着您可以通过Lambda函数点击您的VPC。