本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在本地运行API 网关
使用 sam 本地 start-api
命令启动您将用于测试 HTTP 请求/响应功能的 API 网关 的本地实例。此功能具有热重载功能,使您可以快速开发和迭代函数。
“热重新加载”是指仅刷新已更改的文件而不丢失应用程序的状态。相反,“实时重新加载”是刷新整个应用程序时,这样应用程序的状态就会丢失。
您必须在包含要调用的函数的项目目录中执行 sam local start-api
。
默认情况下,AWS SAM 使用 Lambda 代理集成,并且支持 HttpApi
和 Api
资源类型。有关 HttpApi
资源类型的代理集成的更多信息,请参阅使用适用于 HTTP Lambda 的 APIs 代理集成。 有关与 Api
资源类型的代理集成的更多信息,请参阅了解 API 网关 Lambda 代理集成。
示例:
sam local start-api
AWS SAM 自动在您的 AWS SAM 模板中查找定义了 HttpApi
或 Api
事件源的任何函数。然后,将这些文件装载到定义的 HTTP 路径中。
此动画演示了使用 Microsoft Visual Studio 代码在本地运行 API 网关:

在以下 Api
示例中,Ratings
函数在 ratings.py:handler()
为 /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
如果您的应用程序包含层,请参阅处理层以了解有关如何在本地主机上调试层问题的更多信息。