AWS在AWS SAM CLI中引入远程调用功能,实现Lambda函数的无缝测试

AWS SAM CLI 新增远程调用功能

AWS 最近在 AWS Serverless Application Model (SAM) 命令行工具(CLI)中推出了 远程调用 (remote invoke) 功能,专门用于 AWS Lambda。这一功能允许开发者快速调用部署在 AWS 云中的 Lambda 函数,从而加速开发、测试和部署的迭代流程。

主要功能与优势

  1. 简化测试流程:通过 sam remote invoke 命令,开发者可以轻松测试 Lambda 函数。该命令接受事件负载和 Lambda 逻辑 ID 作为输入,调用函数并输出响应。
  2. 多种调用模式:支持多种调用模式,包括:

    • 响应流模式 (response streaming)
    • 异步调用 (asynchronous invoke)
    • 干运行 (dry run)
    • 请求响应模式 (request response)
  3. 输出配置:开发者可以使用 --output 选项将响应配置为 JSON 或文本格式。
  4. sam sync 协同:结合 sam sync 命令,进一步加速构建-部署-测试的迭代周期。

响应内容

当使用 sam remote invoke 调用 Lambda 函数时,AWS SAM CLI 会返回以下内容:

  • 请求元数据:包括请求 ID 和请求开始时间。
  • Lambda 响应:Lambda 函数在云端被调用后的响应。

使用示例

以下是一个调用 Lambda 函数的示例命令及其输出:

sam remote invoke arn:aws:lambda:us-west-2:012345678910:function:sam-app-HelloWorldFunction-ohRFEn2RuAvp

输出包括请求的详细信息、Lambda 函数的执行结果以及性能指标(如执行时间、内存使用情况等)。

实际应用场景

AWS 首席开发者倡导者 Eric Johnson 在博客中演示了如何使用远程调用功能。他创建了一个包含两个 Lambda 函数的 SAM 应用程序:

  • TranslateFunction:使用 Amazon Translate 服务将文本翻译为目标语言。
  • StreamFunction:生成流式数据。

开发者可以通过远程调用功能模拟 API Gateway 的调用,或者通过 Python SDK (boto3) 获取原始响应,包括调用的版本、重试次数等详细信息。

其他功能

  1. 与 AWS SDK 集成:AWS SAM 使用 boto3 进行远程调用,并引入了 --parameter 标志以支持 SDK 选项。
  2. 日志与追踪:虽然 sam logs 功能可以查看 CloudWatch 和 X-Ray 的聚合日志,但远程调用功能专注于提供特定函数调用的上下文日志,满足测试需求。

版本要求

远程调用功能在 SAM CLI 版本 1.88.0+ 中可用,更多详细信息可参考官方文档。

总结

AWS SAM CLI 的远程调用功能为开发者提供了一种高效测试 Lambda 函数的方式,支持多种调用模式和灵活的响应输出配置。结合 sam sync 等功能,它进一步优化了服务器应用程序的开发流程,帮助开发者更快速地迭代和测试他们的代码。

阅读 34
0 条评论