与自动测试集成 - AWS Serverless Application Model
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

与自动测试集成

您可以使用 sam local invoke 命令,通过运行 Lambda 功能本地。使用 AWS SAM CLI,您可以根据本地 Lambda 功能,然后再部署到AWSCloud。

sam local start-lambda 命令启动仿真 AWS Lambda 调用端点。您可以从自动测试中调用它。因为此端点模仿 AWS Lambda 调用端点,您可以编写测试一次,然后针对本地运行测试(没有任何修改) Lambda 功能,或针对已部署的 Lambda 功能。您还可以针对已部署的 AWS SAM 在CI/CD管道中堆叠。

该过程的工作方式如下:

  1. 启动本地 Lambda 端点。

    启动本地 Lambda 在包含您的的目录中运行以下命令, AWS SAM 模板:

    sam local start-lambda

    此命令启动本地端点 http://127.0.0.1:3001 模仿 AWS Lambda. 您可以针对此本地 Lambda 端点。当您使用 AWS CLI 或SDK,它将在本地执行 Lambda 在请求中指定的函数,并返回响应。

  2. 针对本地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_locallyFalse。这将设置要连接的AWSSDK AWS Lambda 在AWSCloud中。