本地运行 API Gateway - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本地运行 API Gateway

使用sam 本地 start-api命令启动 API Gateway 的本地实例,您将使用该实例来测试 HTTP 请求/响应功能。此功能具有热重新加载功能,使您能够快速开发和迭代功能。

注意

“热重新加载” 是指只刷新已更改的文件而不会丢失应用程序的状态。相比之下,“实时重新加载” 是指刷新整个应用程序,从而导致应用程序的状态丢失。

您必须执行sam local start-api,其中包含您希望调用的函数的项目目录中。

默认情况下,Amazon SAM使用 Lambda 代理集成,并且支持HttpApiApi资源类型。有关HttpApi资源类型,请参阅使用 HTTP API 的 Lambda 代理集成。有关与代理集成的更多信息,Api资源类型,请参阅了解 API Gateway Lambda 代理集成

示例:

sam local start-api

Amazon SAM会自动查找Amazon SAM具有HttpApi或者Api事件源定义。然后,它将它们挂载在定义的 HTTP 路径。

在以下Api示例,Ratings挂载函数挂载ratings.py:handler()at/ratings对于 来说为GET请求:

Ratings: Type: AWS::Serverless::Function Properties: Handler: ratings.handler Runtime: python3.6 Events: Api: Type: Api Properties: Path: /ratings Method: get

以下是示例Api响应:

// Example of a Proxy Integration response exports.handler = (event, context, callback) => { callback(null, { statusCode: 200, headers: { "x-custom-header" : "my custom header value" }, body: "hello world" }); }

环境变量文件

您可以使用--env-vars参数与invoke或者start-api命令提供 JSON 文件,其中包含用于覆盖函数模板中已定义的环境变量的值。您可以按如下方式构建文件:

{ "MyFunction1": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket" }, "MyFunction2": { "TABLE_NAME": "localtable", "STAGE": "dev" }, }

或者,您的环境文件可以包含单个Parameters条目与所有函数的环境变量一起使用。请注意,您不能将此格式与上述示例混合使用。

{ "Parameters": { "TABLE_NAME": "localtable", "BUCKET_NAME": "testBucket", "STAGE": "dev" } }

将环境变量保存在名为env.json。以下命令使用此文件覆盖包含的环境变量:

sam local start-api --env-vars env.json

Layers

如果您的应用程序包含图层,请参阅使用图层,了解有关如何调试本地主机上的图层问题的详细信息。