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

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

sam 本地 start-api

允许您在本地运行无服务器应用程序以进行快速开发和测试。当你在包含无服务器函数和Amazon SAM模板,它会创建本地 HTTP 服务器,用于托管您的所有函数。

默认情况下,当你使用此命令时,Amazon SAMCLI 假设你当前的工作目录是项目的根目录。这些区域有:Amazon SAMCLI 首先尝试查找使用sam build命令,位于.aws-sam子文件夹,并命名template.yaml或者template.yml. 下一步:Amazon SAMCLI 尝试找到名为的模板文件template.yaml或者template.yml在当前工作目录中。如果你指定--template选项,Amazon SAMCLI 的默认行为被覆盖,并且只会加载该行为Amazon SAM模板以及它指向的本地资源。

当它被访问(通过浏览器、CLI 等)时,它会在本地启动 Docker 容器以调用该函数。它会读取的 CodeUri 属性AWS::Serverless::Function资源,在文件系统中找到包含 Lambda 函数代码的文件系统中的路径。这可以是 Node.js 和 Python 等解释性语言的项目根目录,也可以是存储编译构件或 Java 存档 (JAR) 文件的构建目录。

如果您使用的是解释性语言,本地更改在每次调用时都会立即在 Docker 容器中使用。对于更多编译语言或需要复杂包装支持的项目,建议运行您自己的构建解决方案,并指出Amazon SAM转到包含构建项目的目录或文件。

要查看使用此命令的端到端示例,请参阅。教程:部署 Hello World 应用程序. 这些区域有:sam local start-api命令是的一部分第 4 步:(可选)在本地测试应用程序.

使用方法:

sam local start-api [OPTIONS]

选项:

选项 描述
--host TEXT 要绑定到的本地主机名或 IP 地址(默认值:'127.0.0.1')。
-p, --port INTEGER 要监听的本地端口号(默认值:'3000')。
-s, --static-dir TEXT 位于此目录中的任何静态资源(例如,CSS/javasCRIPT/HTML)文件都显示在/。
-t, --template PATH 这些区域有:Amazon SAM模板文件。

注意:如果指定此选项,则Amazon SAM仅加载模板及其指向的本地资源。

-n, --env-vars PATH 包含 Lambda 函数环境变量值的 JSON 文件。
--parameter-overrides 可选。包含的字符串Amazon CloudFormation参数覆盖编码为键值对。使用的格式与Amazon CLI— 例如,“参数键 = 密钥对名称,参数值 = myKey 参数键 = 实例类型,参数值 =T1.micro”。
-d, --debug-port TEXT 指定后,以调试模式启动 Lambda 函数容器,并在本地主机上公开此端口。
--debugger-path TEXT 将挂载到 Lambda 容器中的调试器的主机路径。
--debug-args TEXT 要传递到调试器的其他参数。
--warm-containers [EAGER | LAZY]

可选。指定如何Amazon SAMCLI 为每个函数管理容器。

有两个选项:

   EAGER:所有函数的容器都在启动时加载,并在调用之间保留。

   LAZY:只有在首次调用每个函数时才加载容器。这些容器会持续存在以进行额外的调用。

--debug-function

可选。指定要将调试选项应用于何时的 Lambda 函数--warm-containers已指定。此参数适用于--debug-port--debugger-path, 和--debug-args.

-v, --docker-volume-basedir TEXT 基目录的位置Amazon SAM文件存在。如果 Docker 在远程计算机上运行,则必须将路径挂载到Amazon SAM文件存在于 Docker 计算机上,然后修改此值以匹配远程计算机。
--docker-network TEXT Lambda Docker 容器应连接到的现有 Docker 网络的名称或 ID,以及默认桥接网络。如果未指定此项,Lambda 容器将仅连接到默认的桥接 Docker 网络。
--container-env-vars 可选。在本地调试时将环境变量传递给映像容器。
-l, --log-file TEXT 要向其发送运行时日志的日志文件。
--layer-cache-basedir DIRECTORY 指定您的模板使用的图层下载到的基准位置。
--skip-pull-image 指定 CLI 是否应跳过拉取 Lambda 运行时的最新 Docker 映像。
--force-image-build 指定 CLI 是否应重建用于使用层调用函数的映像。
--profile TEXT 从凭证文件中获取的特定配置文件Amazon凭证。
--region TEXT 这些区域有:Amazon部署到的区域。例如,us-east-1。
--config-file PATH 配置文件的路径和文件名,包含要使用的默认参数值。默认值为项目目录根目录中的 “samconfig.toml”。有关配置文件的详细信息,请参阅 Amazon SAMCLI 配置文件
--config-env TEXT 指定配置文件中要使用的默认参数值的环境名称。默认值为 “默认”。有关配置文件的详细信息,请参阅 Amazon SAMCLI 配置文件
--shutdown 在调用完成后模拟关闭事件,以测试关闭行为的扩展处理。
--container-host TEXT 本地模拟 Lambda 容器的主机。默认值为 localhost。如果你想跑Amazon SAM在 macOS 上 Docker 容器中的 CLI,你可以指定host.docker.internal. 如果你想在不同的主机上运行容器Amazon SAMCLI,您可以指定远程主机的 IP 地址。
--container-host-interface TEXT 容器端口应绑定到的主机网络接口的 IP 地址。默认值为 127.0.0.1。使用0.0.0.0绑定到所有接口。
--debug 打开调试日志记录以打印由Amazon SAMCLI 并显示时间戳。
--help 显示此消息并退出。