AWS Batch 与 AWS CodeBuild

san*_*82h 4 amazon-web-services aws-codebuild aws-batch

我对 AWS 非常陌生,当我搜索从 GitHub(一个 python 项目)下载代码、运行它并将输出保存在 s3 中的内容时,我找到的第一个服务是 CodeBuild。

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

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

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

非常感谢。

Tri*_*mad 6

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

\n
\n

我的(反向)经历...

\n

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

\n

该作业大约需要 1 小时才能运行,因此 AWS Lambda 不适用。

\n

经过一番谷歌搜索后,我找到了 AWS Batch,并决定尝试一下创建简单的 \xe2\x80\x9cFetch & Run\xe2\x80\x9d AWS Batch 作业

\n

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

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

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

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

在未能找到简单的实际示例并意识到所需的努力之后,我决定探索其他解决方案。

\n

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

\n

我过去曾将 AWS Codebuild 用于 CI/CD 管道,并想“管它呢,让我们尝试一下”。在更短的时间内,我能够在 CloudWatch 调度程序上运行“代码构建作业”,并添加代码构建松弛通知,而不需要花费太多精力:

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

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

\n

缺点:

\n
    \n
  • 最长执行时间为 8 小时
  • \n
\n

AWS Codebuild 更容易完成我的简单工作。

\n

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

\n