本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
与自动测试集成
您可以使用 sam local invoke
命令,通过运行 Lambda 功能本地。使用 AWS SAM CLI,您可以根据本地 Lambda 功能,然后再部署到AWSCloud。
的 sam local start-lambda
命令启动仿真 AWS Lambda 调用端点。您可以从自动测试中调用它。因为此端点模仿 AWS Lambda 调用端点,您可以编写测试一次,然后针对本地运行测试(没有任何修改)
Lambda 功能,或针对已部署的 Lambda 功能。您还可以针对已部署的 AWS SAM 在CI/CD管道中堆叠。
该过程的工作方式如下:
-
启动本地 Lambda 端点。
启动本地 Lambda 在包含您的的目录中运行以下命令, AWS SAM 模板:
sam local start-lambda
此命令启动本地端点
http://127.0.0.1:3001
模仿 AWS Lambda. 您可以针对此本地 Lambda 端点。当您使用 AWS CLI 或SDK,它将在本地执行 Lambda 在请求中指定的函数,并返回响应。 -
针对本地Lambda端点运行集成测试。
在集成测试中,您可以使用AWSSDK调用您的 Lambda 功能,等待响应,并验证响应是否符合您的预期。要在本地运行集成测试,您应配置AWSSDK以发送 Lambda 调用API调用以调用本地 Lambda 端点。
以下是Python示例(AWS SDKs 用于其他语言的具有类似的配置):
import boto3 import botocore # Set "running_locally" flag if you are running the integration test locally running_locally = True if running_locally: # Create Lambda SDK client to connect to appropriate Lambda endpoint lambda_client = boto3.client('lambda', region_name="us-west-2", endpoint_url="http://127.0.0.1:3001", use_ssl=False, verify=False, config=botocore.client.Config( signature_version=botocore.UNSIGNED, read_timeout=1, retries={'max_attempts': 0}, ) ) else: lambda_client = boto3.client('lambda') # Invoke your Lambda function as you normally usually do. The function will run # locally if it is configured to do so response = lambda_client.invoke(FunctionName="HelloWorldFunction") # Verify the response assert response == "Hello World"
您可以使用此代码测试已部署 Lambda 功能通过设置
running_locally
至False
。这将设置要连接的AWSSDK AWS Lambda 在AWSCloud中。