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

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

sam local start-la

允许您使用Amazon CLI或 SDK 以编程方式在本地调用 Lambda 函数。此命令启动模拟的本地端点Amazon Lambda。

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

您可以针对此本地 Lambda 终端节点运行自动测试。当您使用Amazon CLI或 SDK 向此终端节点发送调用时,它将在本地执行请求中指定的 Lambda 函数。

用法:

sam local start-lambda [OPTIONS]

示例:

# SETUP # ------ # Start the local Lambda endpoint by running this command in the directory that contains your Amazon SAM template. sam local start-lambda # USING AWS CLI # ------------- # Then, you can invoke your Lambda function locally using the AWS CLI aws lambda invoke --function-name "HelloWorldFunction" --endpoint-url "http://127.0.0.1:3001" --no-verify-ssl out.txt # USING AWS SDK # ------------- # You can also use the AWS SDK in your automated tests to invoke your functions programatically. # Here is a Python example: # # self.lambda_client = boto3.client('lambda', # endpoint_url="http://127.0.0.1:3001", # use_ssl=False, # verify=False, # config=Config(signature_version=UNSIGNED, # read_timeout=0, # retries={'max_attempts': 0})) # self.lambda_client.invoke(FunctionName="HelloWorldFunction")

选项:

选项 描述
--hook-name TEXT

用于扩展Amazon SAM CLI 功能的挂钩的名称。

可接受的值:terraform.

--skip-prepare-infra 如果没有对基础架构进行任何更改,则跳过准备阶段。与--hook-name选项一起使用。
--host TEXT 要绑定的本地主机名或 IP 地址(默认值:'127.0.0.1')。
-p, --port INTEGER 要监听的本地端口号(默认值:'3001')。
-t, --template PATH Amazon SAM模板文件。

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

-n, --env-vars PATH 包含 Lambda 函数环境变量值的 JSON 文件。
--parameter-overrides 可选。包含编码为键/值对的Amazon CloudFormation参数替代项的字符串。使用与Amazon CLI —for 相同的格式,例如 'ParameterKey=、= ParameterValueMyKey ParameterKey =KeyPairNameInstanceType、ParameterValue =t1.micro'。此选项与不兼容--hook-name
-d, --debug-port TEXT 指定后,以调试模式启动 Lambda 函数容器,并在本地主机上公开此端口。
--debugger-path TEXT 要安装到 Lambda 容器中的调试器的主机路径。
--debug-args TEXT 要传递给调试器的其他参数。
--warm-containers [EAGER | LAZY]

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

以下两个选项可用:

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

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

--debug-function

可选。指定 Lambda 函数以在指定时--warm-containers应用调试选项。此参数适用于--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 指定将模板使用的图层下载到的基准位置。
--invoke-image TEXT

要用于本地函数调用的容器镜像的 URI。默认情况下,从 Amazon ECR Public 中Amazon SAM拉取镜像。使用此选项从其他位置拉取镜像。

例如,sam local start-lambda MyFunction --invoke-image amazon/aws-sam-cli-emulation-image-python3.8

--skip-pull-image 指定命令行界面是否应跳过下拉最新 Docker 镜像获取 Lambda 运行时的操作。
--force-image-build 指定 CLI 是否应重建用于调用带图层的函数的映像。
--beta-features | --no-beta-features 允许或拒绝测试版功能。
--profile TEXT 您的凭证文件中获取Amazon证书的特定个人资料。
--region TEXT 要部署到的Amazon区域。例如,us-east-1。
--config-file PATH 包含要使用的默认参数值的配置文件的路径和文件名。默认值为项目目录根目录下的 “samconfig.toml”。有关配置文件的详细信息,请参阅 Amazon SAM CLI 配置文件
--config-env TEXT 在配置文件中指定要使用的默认参数值的环境名称。默认值为 “默认”。有关配置文件的详细信息,请参阅 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 显示此消息并退出。