繁体   English   中英

对涉及 SQS 和 DynamoDB 的数据管道进行本地 Lambda 测试的建议

[英]Advice on local Lambda testing for data pipeline that involves SQS and DynamoDB

其他开发人员和我目前正在测试/构建 lambda 函数,用于清理来自 S3 -> SQS -> 数据路由器 Lambda(python)、DynamoDB 规则引擎,然后是 Lambda 中的文本处理器的数据。 我们目前正在使用 AWS 平台,但我正在尝试在本地测试这部分数据管道。

理想情况下模拟 S3 和 SQS 并转储 zip 文件并通过 lambda function 运行它。 目前正在玩弄 SAM-CLI 和 Visual Studio,但还没有任何问题。 有小费吗?

您可以通过多种方式对 AWS 应用程序进行(本地)测试:

  1. 对“管道”的不同部分使用单元测试,mocking 其他部分,如 DynamoDB、SQS 等。
  2. 使用类似LocalStack的东西。
  3. 每个开发人员在 AWS 中都有自己的“开发人员环境”。 例如,您可以在每个资源前加上开发人员的名称 ( john_processing_lambda )。 您部署到 AWS 并从本地计算机运行集成测试。 您可以使用Terraform 之类的工具来实现类似的目的,它允许您“动态地”命名资源,例如添加带有开发人员名称的前缀。

就个人而言,我认为通过 Docker 容器或诸如 LocalStack 之类的工具运行“在您的本地计算机上的 AWS”并不是很令人满意。 结合使用选项 1 和选项 3,我们获得了最好的结果。两者都有优点,您可以在 CI/CD 管道中使用相同的测试。

此外,不在实际的云 (AWS) 中运行总是要承担“忘记”某些事情的风险。 最值得注意的是 IAM 权限。 所以一切都在您的本地机器上运行良好,但它在 AWS 上不起作用。

我的建议是为每个开发人员部署一个单独的环境,以便他们可以使用实际资源并直接在 AWS 中运行测试。 这与可靠的单元测试相结合应该会产生最好的结果。

AWS 中的开发人员环境的缺点是开发人员每次想要测试某些东西时都必须将他们的代码部署到 AWS。 因此,快速部署很重要。 我发现,有了足够的经验,您就不需要再频繁地进行部署,这不再是一个问题。 尽管如此,团队中的开发人员满意度很重要,因此请确保尽可能顺利。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM