教程:利用 Lambda 代理集成创建 REST API
Lambda 代理集成 是一种轻量型、灵活的 API Gateway API 集成类型,可让您能够使用 Lambda 函数集成 API 方法(或整个 API)。Lambda 函数可以用 Lambda 支持的任何语言编写。由于这是代理集成,因此您可以随时更改 Lambda 函数实现,而无需重新部署您的 API。
在本教程中,您将执行以下操作:
-
创建“Hello, World!” 要作为 API 的后端的 Lambda 函数。
-
创建并测试“Hello, World!” API 与 Lambda 代理集成。
创建“Hello, World!” Lambda 函数
创建“Hello, World!” Lambda 控制台中的 Lambda 函数
通过以下网址登录 Lambda 控制台:https://console.aws.amazon.com/lambda
。 -
在 Amazon 导航栏上,选择 Amazon Web Services 区域。
注意
请注意您创建 Lambda 函数时所在的区域。在创建 API 时,会需要它。
-
在导航窗格中,选择函数。
-
选择创建函数。
-
选择从头开始创作。
-
在基本信息中,执行以下操作:
-
在函数名称中,输入
GetStartedLambdaProxyIntegration
。 -
在运行时中,选择受支持的最新 Node.js 或 Python 运行时。
对于架构,请保留默认设置。
-
在权限下,展开更改默认执行角色。在执行角色下拉列表中,选择从 Amazon 策略模板创建新角色。
-
在角色名称中,输入
GetStartedLambdaBasicExecutionRole
。 -
将策略模板字段留空。
-
选择创建函数。
-
-
在内联代码编辑器的函数代码下,复制/粘贴以下代码:
-
选择部署。
创建“Hello, World!” API
现在为您的“Hello, World!”创建 API。使用 API Gateway 控制台的 Lambda 函数。
创建“Hello, World!” API
通过以下网址登录到 Amazon API Gateway 控制台:https://console.aws.amazon.com/apigateway
。 -
如果您是第一次使用 API Gateway,您会看到一个介绍服务特征的页面。在 REST API 下,选择生成。当创建示例 API 弹出框出现时,选择确定。
如果这不是您首次使用 API Gateway,请选择创建 API。在 REST API 下,选择生成。
对于 API 名称,请输入
LambdaProxyAPI
。(可选)对于描述,输入描述。
将 API 端点类型设置保留为区域。
选择创建 API。
创建 API 后,您将创建一个资源。通常情况下,根据应用程序逻辑将 API 资源组织成资源树形式。在本示例中,您将创建一个 /helloworld 资源。
创建资源
选择创建资源。
将代理资源保持为关闭状态。
将资源路径保持为
/
。对于资源名称,输入
helloworld
。将 CORS(跨源资源共享)保持为关闭状态。
选择创建资源。
在代理集成中,整个请求将通过表示任何 HTTP 方法的“捕获全部”ANY
方法按原样发送到后端 Lambda 函数。实际的 HTTP 方法由客户端在运行时指定。ANY
方法可让您对所有支持的 HTTP 方法使用单个 API 方法设置:DELETE
、GET
、HEAD
、OPTIONS
、PATCH
、POST
和 PUT
。
创建 ANY
方法
选择 /helloworld 资源,然后选择创建方法。
对于方法类型,选择 ANY。
对于集成类型,选择 Lambda 函数。
打开 Lambda 代理集成。
对于 Lambda 函数,选择您创建 Lambda 函数的 Amazon Web Services 区域,然后输入函数名称。
-
要使用默认超时值 29 秒,请保持默认超时处于开启状态。要设置自定义超时,请选择默认超时,然后输入一个介于
50
到29000
毫秒之间的超时值。 选择创建方法。
部署并测试 API
部署 API
选择部署 API。
对于阶段,选择新建阶段。
对于阶段名称,输入
test
。(可选)对于描述,输入描述。
选择部署。
在阶段详细信息下,选择复制图标以复制您 API 的调用 URL。
使用浏览器和 cURL 来通过 Lambda 代理集成测试 API
您可以使用浏览器或 cURL
要仅使用查询字符串参数测试 GET
请求,您可以在浏览器地址栏中输入 API 的 helloworld
资源的 URL。
要创建 API 的 helloworld
资源的 URL,请将资源 helloworld
和查询字符串参数 ?greeter=John
附加到您的调用 URL。URL 应类似以下内容。
https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld?greeter=John
对于其他方法,您必须使用更高级的 REST API 测试实用程序,如 POSTMAN
使用 cURL 测试已部署的 API:
-
打开终端窗口。
-
复制以下 cURL 命令并粘贴到终端窗口中,将调用 URL 替换为在上一步中复制的调用 URL,并在该 URL 的末尾添加
/helloworld
。注意
如果您在 Windows 上运行命令,请改用以下语法:
curl -v -X POST "https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld" -H "content-type: application/json" -d "{ \"greeter\": \"John\" }"使用查询字符串参数
?greeter=John
调用 API:curl -X GET 'https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld?greeter=John'使用标头参数
greeter:John
调用 API:curl -X GET https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -H 'greeter: John'使用正文
{"greeter":"John"}
调用 API:curl -X POST https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -d '{ "greeter": "John" }'
在所有情况下,输出为具有以下响应正文的 200 响应:
Hello, John!