本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 sam local start-lambda
使用 Amazon Serverless Application Model 命令行界面 (Amazon SAM CLI) sam local start-lambda
子命令通过 Amazon Command Line Interface (Amazon CLI) 或 SDK 调用 Amazon Lambda 函数。此命令启动模拟 Amazon Lambda 的本地端点。
-
有关 Amazon SAM CLI 的简介,请参阅 那是什么 Amazon SAMCLI?。
-
有关
sam local start-lambda
命令选项的列表,请参阅 sam local start-lambda。
要使用 sam local start-lambda
,请完成以下操作安装 Amazon SAM CLI。
我们建议您在使用 sam local start-lambda
之前初步了解以下主题:
使用 sam local start-lambda
当您运行 sam local start-lambda
时,Amazon SAM CLI 会假设当前工作目录是项目的根目录。Amazon SAM CLI 会首先在 .aws-sam
子文件夹中查找 template.[yaml|yml]
文件。如果找不到,Amazon SAM CLI 会在当前工作目录中查找 template.[yaml|yml]
文件。
要使用 sam local start-lambda
-
从项目的根目录中,运行以下命令:
$
sam local start-lambda
<options>
-
Amazon SAM CLI 会在本地 Docker 容器中构建 Lambda 函数。然后,它会将本地地址输出到 HTTP 服务器端点。以下是 示例:
$
sam local start-lambda
Initializing the lambda functions containers. Local image is up-to-date Using local image: public.ecr.aws/lambda/python:3.9-rapid-x86_64. Mounting /Users/.../sam-app/hello_world as /var/task:ro,delegated, inside runtime container Containers Initialization is done. Starting the Local Lambda Service. You can now invoke your Lambda Functions defined in your template through the endpoint. 2023-04-13 07:25:43 WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead. * Running on http://127.0.0.1:3001 2023-04-13 07:25:43 Press CTRL+C to quit -
使用 Amazon CLI 或 SDK 在本地调用 Lambda 函数。
以下是一个使用 Amazon CLI 的示例:
$
aws lambda invoke --function-name
StatusCode: 200 (END)"HelloWorldFunction"
--endpoint-url"http://127.0.0.1:3001"
--no-verify-ssl out.txt以下是将 Amazon SDK 用于 Python 的示例:
import boto3 from botocore.config import Config from botocore import UNSIGNED 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=1, retries={'max_attempts': 0} ) ) lambda_client.invoke(FunctionName="HelloWorldFunction")
Options
指定模板
要为 Amazon SAM CLI 指定要引用的模板,请使用 --template
选项。Amazon SAM CLI 只会加载该 Amazon SAM 模板及其指向的资源。以下是 示例:
$
sam local start-lambda --template
myTemplate.yaml
最佳实践
如果应用程序有无法运行 sam build
的 .aws-sam
目录,请务必在每次更新函数代码时都运行 sam build
。然后,运行 sam local start-lambda
,以在本地测试更新后的函数代码。
本地测试是部署到云中之前进行快速开发和测试的理想解决方案。但是,本地测试并不能验证所有内容,例如,不能验证云端资源之间的权限。尽可能在云端测试应用程序。我们建议使用 sam sync 来加快云测试工作流程。
了解更多信息
有关全部 sam local start-lambda
选项的列表,请参阅 sam local start-lambda。