繁体   English   中英

AWS Batch 与 AWS CodeBuild

[英]AWS Batch vs AWS CodeBuild

我是 AWS 的新手,当我搜索一些东西以从 GitHub(一个 python 项目)下载代码时,运行它,并将 output 保存在 s3 中,我发现的第一个服务是 CodeBuild。

所以我使用 CodeBuild 实现了这种工作流。

但现在我看到 AWS 有一项名为 AWS Batch 的服务,我想知道是否应该将我的架构迁移到 AWS Batch。

您能解释一下哪一个 - AWS CodeBuild 或 AWS Batch - 更适合我的案例吗? 何时使用 AWS Batch 而不是 AWS CodeBuild?

非常感谢。

TLDR 摘要:AWS Codebuild 是简单作业的更好选择。


我的(反向)经历...

我需要运行一个简单的作业,从外部 api 提取数据,读/写到外部数据库,并生成 CSV 报告。

该作业需要约 1 小时才能运行,因此 AWS Lambda 不在考虑范围之内。

经过一番谷歌搜索后,我找到了 AWS Batch,并决定尝试创建一个简单的“获取并运行”AWS Batch 作业

这个“简单”工作所需的步骤:

  • 使用获取和运行脚本构建一个 Docker 图像
  • 为图像创建 Amazon ECR 存储库
  • 将构建的镜像推送到 ECR
  • 创建一个简单的作业脚本并将其上传到 S3
  • 创建一个 IAM 角色以供作业使用以访问 S3
  • 配置计算环境
  • 创建作业队列
  • 创建一个使用构建图像的作业定义
  • 提交并运行从 S3 执行作业脚本的作业

在花时间创建所有这些资源之后,它并没有开箱即用。 我发现自己调试了一些我不应该调试的随机事情,例如:

  • Dockerfile
  • 入口点脚本
  • ECS集群
  • EC2 实例和自动缩放组

在找不到简单的实用示例并意识到需要付出大量努力后,我决定探索其他解决方案。

我偶然发现了使用 AWS CodeBuild 执行管理任务和这篇文章。

我过去曾将 AWS Codebuild 用于 CI/CD 管道,并认为“到底是什么,让我们试一试”。 在更短的时间内,我能够在 cloudwatch 调度程序上运行“codebuild 作业”,并添加了 codebuild slack 通知,更省力:

  • 将构建项目连接到您的源代码
  • Select 运行时环境
  • 创建 IAM 角色
  • 创建一个 buildspec.yml 并添加运行时命令

一个主要优势是CodeBuild 在成熟的 Linux 环境中运行任务。

缺点:

  • 最长执行时间 8 小时

AWS Codebuild 对于我的简单工作来说更容易上手。

抱歉发了这么长的帖子,只是想分享我对这两项服务的体验。

AWS Batch用于高度并行计算,例如同时处理大量图像:

AWS Batch 使您能够在 AWS 云上运行批处理计算工作负载 批处理计算是开发人员、科学家和工程师访问大量计算资源的常用方式,而 AWS Batch 消除了配置和管理所需基础设施的无差别繁重工作,类似于传统的批处理计算软件。

因此,它不适合您要使用的内容。 根据您的描述,CodeBuild 是更好的选择。

暂无
暂无

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

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