amazon-web-services - 在 Lambda 中运行任意 Docker 容器?
问题描述
语境
我们有一个赛普拉斯测试套件,我们希望将其作为管道的一部分运行。不幸的是,测试套件使用了太多资源,无法直接在管道中运行。
我们找到的一个潜在解决方案是构建一个包含测试套件的 Docker 映像,然后将容器的实际运行委托给 Lambda。
问题
我面临的问题是,对于 Lambda,如果您想运行 Docker 容器,则必须在创建 Lambda 函数时预先选择映像。但是,由于我们每次运行管道时都在构建一个新图像,所以图像 ID 不是静态的。
我们的用例/约束
- 轻松运行任意 Docker 映像
- 支持同步和异步,所以我们可以选择阻塞直到测试完成
注意:使用 Lambda 不是我们的限制之一。这似乎是我们可以使用的东西,因为您可以在需要时调用它,而且您无需担心配置。
我试过的
- Docker-in-Docker 尝试从另一个容器中运行我们的 Cypress 映像。这需要对容器的特权访问,看起来 Lambda 不允许这样做
- 使用自定义运行时尝试手动运行 Docker 容器。Docker 不包含在 AWS Linux 2 中,看起来我也无法安装它。
解决方案
运行 lambda 自定义运行时需要您发布到 ECR。
ECR 图像将始终具有不同的哈希值。
但是,一次可以运行一个版本的 lambda。
如果您打算创建具有不同版本的 lambda 函数的多个实例,那将是不可能的。
最好将特定的 lambda 图像专用于较小的任务并运行它。
然后,您将能够在 CI 完成时构建每个 lambda 函数。之后,您可以根据需要运行 lambda 函数。
推荐阅读
- javascript - 在 Mobile Safari 中,Sticky Header 会跳到屏幕顶部
- python - 如何在我的代码中正确使用带有树莓派相机模块的 openCV?
- amazon-web-services - AWS EC2 - yum 更新在 AutoScaling LaunchConfig UserData 中不起作用
- java - ReentrantReadWriteLock 阻止我对对象采取行动?
- php - 使用ajax将数据从视图传递到控制器时出错
- pixi.js - 在 pixi 中加载精灵的另一种方法
- c# - 访问在不同项目中但在相同解决方案中的文件
- python - 如何让 django 在指定目录中查找静态而不是 view/file.css
- html - 幻灯片不符合网格测量
- arrays - 如何使用 jq 更新数组中的多个对象