首页 > 解决方案 > 在 Lambda 中运行任意 Docker 容器?

问题描述

语境

我们有一个赛普拉斯测试套件,我们希望将其作为管道的一部分运行。不幸的是,测试套件使用了太多资源,无法直接在管道中运行。

我们找到的一个潜在解决方案是构建一个包含测试套件的 Docker 映像,然后将容器的实际运行委托给 Lambda。

问题

我面临的问题是,对于 Lambda,如果您想运行 Docker 容器,则必须在创建 Lambda 函数时预先选择映像。但是,由于我们每次运行管道时都在构建一个新图像,所以图像 ID 不是静态的。

我们的用例/约束

  1. 轻松运行任意 Docker 映像
  2. 支持同步和异步,所以我们可以选择阻塞直到测试完成

注意:使用 Lambda 不是我们的限制之一。这似乎是我们可以使用的东西,因为您可以在需要时调用它,而且您无需担心配置。

我试过的

标签: amazon-web-servicesdockeraws-lambda

解决方案


运行 lambda 自定义运行时需要您发布到 ECR。

ECR 图像将始终具有不同的哈希值。

但是,一次可以运行一个版本的 lambda。

如果您打算创建具有不同版本的 lambda 函数的多个实例,那将是不可能的。

最好将特定的 lambda 图像专用于较小的任务并运行它。

然后,您将能够在 CI 完成时构建每个 lambda 函数。之后,您可以根据需要运行 lambda 函数。


推荐阅读