使用测试简介 sam local start-lambda - AWS Serverless Application Model

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

使用测试简介 sam local start-lambda

使用 AWS SAM CLI 子命令通过sam local start-lambda AWS CLI 和调用您的 Lambda 函数。SDKs此命令启动模拟 Lambda 的本地端点。

要使用sam local start-lambda,请安装 AWS SAM CLI 通过完成以下操作:

我们建议您在使用 sam local start-lambda 之前初步了解以下主题:

使用 sam local start-lambda

当你跑步时sam local start-lambda, AWS SAM CLI 假设您当前的工作目录是项目的根目录。的 AWS SAM CLI 将首先在.aws-sam子文件夹中查找template.[yaml|yml]文件。如果未找到, AWS SAM CLI 将在当前工作目录中查找template.[yaml|yml]文件。

要使用 sam local start-lambda
  1. 从项目的根目录中,运行以下命令:

    $ sam local start-lambda <options>
  2. 的 AWS SAM CLI 在本地构建您的 Lambda 函数 Docker 容器。然后,它会将本地地址输出到您的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
  3. 使用 AWS CLI 或在本地调SDKs用您的 Lambda 函数。

    以下是一个使用 AWS CLI的示例:

    $ aws lambda invoke --function-name "HelloWorldFunction" --endpoint-url "http://127.0.0.1:3001" --no-verify-ssl out.txt StatusCode: 200 (END)

    以下是使用以下内容的示例 AWS SDK for 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

指定模板

要为指定模板 AWS SAM CLI 要参考,请使用--template选项。的 AWS SAM CLI 将只加载该 AWS 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