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

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

sam 本地启动 api

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

默认情况下,当您使用此命令时,Amazon SAMCLI 假定您当前的工作目录是项目的根目录。CAmazon SAM LI 首先尝试找到使用山姆·布莱德命令生成的模板文件,该文件位于.aws-sam子文件夹中,命名为template.yamltemplate.yml。接下来,Amazon SAMCLI 会尝试在当前工作目录template.yml中找到名为template.yaml或的模板文件。如果您指定该--template选项,Amazon SAMCLI 的默认行为将被覆盖,并将仅加载该Amazon SAM模板及其指向的本地资源。

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

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

要查看使用此命令的 end-to-end 示例,请参阅教程:部署 Hello World 应用程序。该sam local start-api命令是其中的一部分步骤 6:(可选)在本地测试应用程序

用法:

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 —相同的格式,例如,'ParameterKey=KeyPairName, ParameterValueMyKey ParameterKey=InstanceType,ParameterValue=t1.micro'。
-d, --debug-port TEXT 指定后,在调试模式下启动 Lambda 函数容器并在本地主机上公开此端口。
--debugger-path TEXT 将安装到 Lambda 容器中的调试器的主机路径。
--debug-args TEXT 要传递给调试器的其他参数。
--warm-containers [EAGER | LAZY]

可选。指定Amazon SAM CLI 如何管理每个函数的容器。

以下:

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

   LAZY: 容器仅在首次调用每个函数时加载。这些容器会保留下来以供额外调用。

--debug-function

可选。指定在指定时应用调试选项--warm-containers的 Lambda 函数。此参数适用于--debug-port--debugger-path、和--debug-args

-v, --docker-volume-basedir TEXT Amazon SAM文件所在的基本目录的位置。如果 Docker 在远程计算机上运行,则必须在 Docker 计算机上安装Amazon SAM文件存在的路径,然后修改此值以匹配远程计算机。
--docker-network TEXT Lambda Docker 容器应连接的现有 Docker 网络的名称或 ID,以及默认的桥接网络。如果未指定此项,Lambda 容器将仅连接到默认的桥接 Docker 网络。
--container-env-vars 可选。在本地调试时,将环境变量传递给图像容器。
-l, --log-file TEXT 要向其发送运行时日志的日志文件。
--layer-cache-basedir DIRECTORY 指定将模板使用的图层下载到的基于位置。
--skip-pull-image 指定CLI是否应跳过下拉最新 Docker 镜像获取 Lambda 运行时的操作。
--force-image-build 指定 CLI 是否应重建用于调用带层的函数的镜像。
--invoke-image TEXT

您要在 Lambda 函数中使用容器映像的 URI。默认情况下,从 Amazon ECR Public 中Amazon SAM拉取容器镜像。使用此选项可:

您可以多次指定该选项。此选项的每个实例都可以采用字符串或键值对。如果您指定字符串,则它是用于应用程序中所有函数的容器映像的 URI。例如,sam local start-api --invoke-image public.ecr.aws/sam/emu-python3.8。如果您指定键值对,则密钥是资源名称,值是用于该资源的容器映像的 URI。例如 sam local start-api --invoke-image public.ecr.aws/sam/emu-python3.8 --invoke-image Function1=amazon/aws-sam-cli-emulation-image-python3.8 。使用键值对,您可以为不同的资源指定不同的容器镜像。

--profile TEXT 您的凭证文件中用于获取Amazon证书的特定配置文件。
--region TEXT 要部署到的Amazon区域。例如,us-east-1。
--config-file PATH 包含要使用的默认参数值的配置文件的路径和文件名。项目目录根目录中的默认值为 “samconfig.toml”。有关配置文件的详细信息,请参阅 Amazon SAM CLI 配置文件
--config-env TEXT 环境名称,用于指定要使用的配置文件中的默认参数值。默认值为 “DISABLED"(默可:有关配置文件的详细信息,请参阅 Amazon SAM CLI 配置文件
--shutdown 在调用完成后模拟关机事件,以测试扩展对关机行为的处理。
--container-host TEXT 本地仿真 Lambda 容器的主机。默认值为 localhost。如果你想在 macOS 上的 Docker 容器中运行Amazon SAM CLI,你可以指定host.docker.internal。如果要在与Amazon SAM CLI 不同的主机上运行容器,则可以指定远程主机的 IP 地址。
--container-host-interface TEXT 容器端口应绑定到的主机网络接口的 IP 地址。默认值为 127.0.0.1。用于绑定0.0.0.0到所有接口。
--debug 打开调试日志记录以打印Amazon SAM CLI 生成的调试消息并显示时间戳。
--help 显示此消息并退出。