亚马逊AWS官方博客
使用 AWS 原生解决方案替换自我管理的数据库调度程序批处理作业
解决方案概述
下图展示了该解决方案的架构。
您可以创建特定于批处理脚本的可重用容器镜像,并将这些镜像保存在 Amazon Elastic Container Registry (Amazon ECR) 中。Amazon ECR 可帮助您在任何地方存储、共享和部署容器软件。您可以将 SQL(或其他类型的)批处理脚本上传到 S3 存储桶。为了使该解决方案参数化并可重用于不同使用案例,您可以将输入参数和元数据(例如,您上传到 Amazon S3 的批处理脚本的位置)保存在 Amazon DynamoDB 中。Amazon EventBridge 调用 AWS Step Functions,这是一项低代码、可视化工作流服务,您可以使用它来编排 AWS Batch 作业。AWS Batch 使用存储在 Amazon ECR 中的容器镜像。Step Functions 获取存储在 DynamoDB 表中的元数据,以启动 AWS Batch 作业,并对目标 RDS 数据库实例运行批处理脚本。
该演示大致包括以下步骤:
- 将 Amazon RDS 凭据存储在 AWS Secrets Manager 中。
- 将带有示例代码的 GitHub 存储库克隆到 AWS Cloud9 实例。
- 创建 S3 存储桶并上传批处理脚本。
- 创建 Docker 镜像以针对数据库运行批处理脚本。
- 构建、标记 Docker 镜像并将其推送到 Amazon ECR。
- 设置 AWS Batch 环境和 AWS Batch 作业定义。
- 通过 Step Functions 编排运行 AWS Batch 作业。
- 设置 EventBridge 计划以调用 Step Functions 状态机。
本文中的步骤旨在提供一般指导,并非具体流程。或者,您可以跳过演示这些手动步骤的部分,转到使用 CloudFormation 模板部署解决方案这一部分,以通过 AWS CloudFormation 简化设置。
AWS Batch 概述
AWS Batch 使开发人员、科学家和工程师能够在 AWS 中运行成百上千个批处理计算作业。AWS Batch 根据批处理作业的 CPU 和内存要求动态预置计算资源的最佳数量与类型。
使用 AWS Batch,您不需要安装和管理用于运行作业的批处理计算软件或服务器,这一您就可以专注于分析结果和解决问题。相关详情,请观看视频 AWS Batch 的工作原理。
先决条件
在开始之前,请完成以下先决条件:
- 准备好 Amazon Virtual Private Cloud (Amazon VPC)。请参阅 AWS CloudFormation VPC 模板,快速构建一个。
- 在上述 VPC 中创建您的 RDS 实例,并准备好数据库凭据。
- 在上述 VPC 中准备好您的 AWS Cloud9 实例。创建 AWS Cloud9 实例时,您可以使用 Network settings (advanced)(网络设置(高级))选择 VPC。
成本
本文中使用的 AWS 服务可能会产生一些使用费。请参阅 AWS 定价页面,查看本文中使用的这些服务的成本。
将 Amazon RDS 凭据存储在 Secrets Manager 中
要存储您的 Amazon RDS 凭据,请完成以下步骤:
- 在 Amazon RDS 控制台的导航窗格中,选择 Databases(数据库)。
- 选择您的数据库,然后在 Connectivity & security(连接和安全性)选项卡上,捕获数据库端点 URL 和端口。
- 在 Secrets Manager 控制台上,选择导航窗格中的 Secrets (密钥)。
- 将新密钥存储为 Other type of secret (其他类型的密钥),以将所有数据库登录详情存储为键值对。使用密钥名称作为 rds-secret。
如果您使用其他名称,请使用正确的名称更新示例批处理脚本。
不要将数据库凭据存储为密钥类型 Other type of secret(其他类型的密钥),您可以选择 Credentials for Amazon RDS database(Amazon RDS 数据库凭据)或 Credentials for other database(其他数据库凭据)。您可以根据自己的选择更新文件 rds_batch_sql1.sh(创建 S3 存储桶并上传批处理脚本部分中提到),并参考 SecretManager CLI 命令。通过使用密钥类型 Other type of secret(其他类型的密钥),我们试图使该解决方案更加通用。例如,您可以将它用于安装在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上的数据库,或者使用与默认值不同的端口号或 SID。
将 GitHub 存储库克隆到 AWS Cloud9
在此步骤中,您将克隆带有可供您使用的示例脚本的 GitHub 存储库。
- 设置 AWS Cloud9 实例(在与 RDS 实例相同的 VPC 中)。
- 从 AWS Cloud9 终端运行 git clone 命令:
git clone https://github.com/aws-samples/awsnative-batchscript-orchestration.git
创建 S3 存储桶并上传批处理脚本
在此步骤中,您将创建 S3 存储桶并上传我们的示例批处理 SQL 脚本。
- 在 Amazon S3 控制台上,选择 Create bucket(创建存储桶)。
- 命名存储桶;例如,rdsbatch-123-useast1。
- 选择您所在的区域;例如,美国东部(弗吉尼亚北部)us-east-1。
- 选择 Create bucket(创建存储桶)。
您可以更改默认设置。 - 转到您的 AWS Cloud9 实例。
- 将目录更改为您克隆的 GitHub 存储库的 Step1 文件夹:
cd /home/ec2-user/environment/awsnative-batchscript-orchestration/Step1
- 查看您可以对 Amazon RDS 数据库运行的示例脚本 rds_batch_sql1.sh。
如果您在 Secrets Manager 中存储 Amazon RDS 凭据时更改了密钥键值对的顺序,则需要相应地调整 shell 脚本中的打印变量数,以获得正确的字符串。在示例代码中,要提取的第一个字符串是主机名,最后一个是密码。如果您将密钥名称更改为 rds-secret 以外的名称,请在脚本中更新新名称。还应检查区域(在 aws secretsmanager get-secret-value 命令中使用)。根据您所在的区域进行更新。aws secretsmanager get-secret-value --secret-id <rds-secret value name> --query SecretString --output text --region <region>
如果出现任何错误,请查看“故障排除”部分。
- 要将 AWS Batch 文件上传到 Amazon S3 存储桶,请从 AWS Cloud9 实例运行以下命令:
aws s3 cp rds_batch_sql1.sh s3://<name of your bucket>/
如果您使用 Windows 计算机浏览器将文件拖放到 Amazon S3,则可能会导致在 Unix/Linux Docker 镜像上运行 Windows shell 文件时出现一些问题。因此,您应该使用 AWS CLI s3 cp 选项,从 Unix/Linux 实例(本例为 AWS Cloud9)上传脚本。
- 复制已上传脚本的 Amazon S3 URI(例如,s3://rdsbatch-123-useast1/rds_batch_sql1.sh)以备将来使用。
创建 Docker 镜像以针对数据库运行批处理脚本
在此步骤中,您将创建 Docker 镜像,以便将其用作运行时环境来运行 SQL 脚本。
要创建 Docker 镜像以下载 SQL 脚本并针对数据库运行,请完成以下步骤:
- 转到您的 AWS Cloud9 实例。
- 将目录更改为您克隆的 GitHub 存储库的 Step2 文件夹:
cd /home/ec2-user/environment/awsnative-batchscript-orchestration/Step2
- 使用前一部分中复制的 Amazon S3 URI(例如,s3://rdsbatch-123-useast1/rds_batch_sql1.sh)编辑 Dockerfile,以使用正确的 S3 存储桶和对象名称。该 Docker 镜像会执行以下操作:
-
- 安装 Oracle SQL*Plus 客户端
- 安装 Python 和 pip
- 安装 AWS CLI 和 which
- 将 fetch_and_run_s3script.sh 复制到 Docker 镜像目录 /usr/local/bin/
- 当 Docker 启动时调用 /usr/local/bin/fetch_and_run_s3script.sh
脚本 fetch_and_run_s3script.sh 是 shell 脚本,它使用 AWS CLI 将 AWS Batch 文件复制到容器并运行。
您使用的是公开发布的 oraclelinux:8-slim Oracle Linux Docker 版本。如果您愿意,可以使用 Oracle 账户登录,从 Oracle 站点下载首选镜像。 -
- 构建 Docker 镜像:
docker build -t myrdsbatch .
有关 Docker 的更多信息,请参阅什么是 Docker?有关创建要在 Amazon ECS 上使用的容器镜像的说明,请参见创建要在 Amazon ECS 上使用的容器镜像
- 运行 Docker 镜像:
docker run myrdsbatch
为了成功运行,您应该会在输出中看到打印的日期。如果出现任何错误,请查看故障排除部分。
- 更改 Docker 镜像,并对包含 ENV BATCH_FILE_S3_URL 的一行添加注释或将其删除。
- 更新 Docker 镜像:
docker build -t myrdsbatch .
现在,您已经测试了 Docker 镜像的最终版本,可以将其上传到 Amazon ECR,因为 AWS Batch 需要 Docker 镜像在 Amazon ECR 中可用。
构建、标记 Docker 镜像并将其推送到 Amazon ECR
要构建、标记 Docker 镜像并将其推送到 Amazon ECR,请执行以下操作:
- 在 Amazon ECR 控制台中,创建 Amazon ECR 私有存储库(在本文,我们将其称为 myrdsbatch)。
- 选择存储库,然后选择 View push commands (查看推送命令),以从 AWS Cloud9 实例运行。
- 检索身份验证令牌,针对注册表验证 Docker 客户端身份,并运行它。
如果您在使用 AWS CLI 时收到错误,请确保安装了最新版本的 AWS CLI 和 Docker。
- 构建 Docker 镜像。
- 标记镜像。
- 将镜像推送到 Amazon ECR 存储库。
以下屏幕截图表明镜像已成功推送到 Amazon ECR。
- 打开 Amazon ECR 镜像并捕获 URI(例如,xxxxxx.dkr.ecr.us-east-1.amazonaws.com/myrdsbatch:latest)。
设置 AWS Batch 环境和 AWS Batch 作业定义
在此步骤中,您将设置可用于运行数据库和 SQL 脚本的 AWS Batch 环境。有关更多信息,请参阅 AWS Batch 入门。
- 在 AWS Batch 控制台上,选择 Compute environment(计算环境),然后选择 Create(创建)。
- 将 Compute environment type(计算环境类型)选为 Managed(托管)。
- 输入环境的名称,例如 test-batch。
- 选择以下实例配置选项:
- 按需(您可以选择使用 AWS Fargate 和 Spot)
- 最小 vCPU 数量:4
- 最大 vCPU 数量:48
- 所需 vCPU 数量:12
- 在 Networking(网络)下,选择要使用 VPC 和子网的 VPC 设置,以及安全组。
- 创建计算环境。
- 在导航窗格中,选择 Job queues(作业队列),然后选择 Create(创建)。
- 输入作业队列的名称,例如 rds-batch-1。
- 选择您刚刚创建的计算环境 (test-batch)。
- 创建作业队列。
- 在导航窗格中,选择 Job definitions(作业定义),然后选择 Create(创建)。
- 将 Job Type(作业类型)设置为 Single-Node(单节点)。
- 输入作业定义的名称,例如 rds-batch-job-def-1。
- 将 Platform type(平台类型)设置为 EC2。
- 选择一个执行角色。
请参阅有关角色权限的故障排除部分,详细了解角色所需的权限。
- 对于作业配置镜像,输入您之前复制的 Amazon ECR 镜像 URI (xxx.dkr.ecr.us-east-1.amazonaws.com/myrdsbatch:latest)。
- 使 Command(命令)字段留空。
- 启用 Job role configuration (作业角色配置),并选择您的执行角色。
- 创建作业定义。
- 在 AWS Batch 控制台上,依次选择 Jobs(作业)和 Submit job(提交作业)。
- 输入作业的名称,例如 myrds-test-job1。
- 对于 Job definition(作业定义),选择您创建的作业定义 (rds-batch-job-def-1:<version#>)。
- 对于 Job queue(作业队列),选择您创建的作业队列 (rds-batch-1)。
- 启用 Environment variables configuration(环境变量配置)。
- 添加 BATCH_FILE_S3_URL 参数,将 S3 URI 作为键值对。
- 选择 Submit job(提交作业)。
- 在 Jobs(作业)下,选择作业 ID 链接以查看作业状态。您可以查看 CloudWatch 日志,确保作业成功完成。
有关如何监控 AWS Batch 作业以及如何修复故障或错误,请参阅故障排除部分。
通过 Step Functions 编排 AWS Batch 作业运行
在此步骤中,您将使用 Step Functions 编排 AWS Batch 作业。Step Functions 是一款无服务器函数编排工具,可以轻松地对 AWS Lambda 函数和多项 AWS 服务排序,使其转换为业务关键型应用程序。
在本例中,您使用三个输入来调用 AWS Batch 作业:批处理 (SQL) 脚本的 S3 URI、AWS Batch 作业定义和 AWS Batch 队列 ARN。您可以将这些值保存在不同脚本的 DynamoDB 表中,如果需要,还可以选择添加 CPU 或内存等其他参数。Step Functions 状态机可以连接到 DynamoDB 并使用这些参数调用 AWS Batch 作业。
- 在 Amazon DynamoDB 控制台的左侧导航窗格中,选择 Dashboard(控制面板)。在控制台右侧,选择 Create Table(创建表)。
- 按如下所示输入表详细信息:
- 对于表名,输入 rds-batch。
- 对于分区键,输入 JobName。
- 将默认设置保留为选中状态。
- 单击 Create table(创建表)以创建表。
- 在 Amazon DynamoDB 控制台的左侧导航窗格中,选择 Tables(表)。在表列表中,选择 rds-batch 表。
您可以参阅创建表,了解如何创建 DynamoDB 表。
- 选择 Explore table items(浏览表项)。
- 在 Items(项)视图中,选择 Create item(创建项)。
- 对于属性 JobName,输入值为 Test123。
- 依次选择 Add new attribute(添加新属性)和 String(字符串)。命名字段 JobDefinition,然后粘贴上一部分中创建的 AWS Batch 作业的 JobDefinition 值。
- 重复此过程,以创建 String(字符串)类型的 JobQueue 和 ScriptLocation 字段,然后输入这些字段的值。
- JobName – 测试作业名称,例如 Test123
- JobDefinition – AWS Batch 作业定义 ARN
- JobQueue – AWS Batch 作业队列 ARN
- ScriptLocation – 示例批处理脚本的 S3 URI
您可以参阅使用控制台或 AWS CLI 将数据写入表,了解如何将数据写入 DynamoDB 表。
- 在 DynamoDB 表中再创建两个具有不同作业名称的项,例如 Test124 和 Test125,但确保其余值相同。
如果您从表中选择一个项,则可以选择通过更改作业名称来复制该项。创建所有三个条目后,表项如下屏幕截图所示。
接下来,创建 Step Functions 状态机来编排 AWS Batch 作业运行。您可以使用样本状态机代码 state-machine-sample2.json,它会提取来自 rds-batch DynamoDB 表的 AWS Batch 作业容器参数,并运行三个 AWS Batch 作业 (Test123, Test124, and Test125)。
如果出现任何故障,状态机都可以通知 Amazon Simple Notification Service (Amazon SNS) 主题。接下来,我们来创建一个 SNS 主题。
- 在 Amazon SNS 控制台上,依次选择 Topics(主题)和 Create topic(创建主题)。
- 将 Standard(标准)设置为 Type(类型)。
- 命名主题 Batch-Notify,并创建主题。
- 转到 AWS Cloud9 实例,然后将目录更改为您克隆的 GitHub 存储库的 Step3 文件夹。
- 复制 state-machine-sample2.json 的内容,或者,使用右键单击 AWS Cloud9 中的文件资源管理器时获得的选项下载它。
- 在 Step Functions 控制台上,依次选择 State Machines(状态机)和 Create state machine(创建状态机)。
- 选择 Design your Workflow visually(直观地设计工作流),然后选择 Next(下一步)。
- 选择 Import(导入),以导入状态机定义文件。
- 选择名为 SNS Publish 的状态。
- 在右侧,您可以在 API Parameters(API 参数)下,选择从下拉列表中重新选择新创建的 SNS 主题 ARN。
- 检查 API Parameters(API 参数)值(针对 Batch: Submit Job 状态),以便您从 DynamoDB 获取 AWS Batch 作业输入。
- 仔细阅读提示以保存状态机。
请参阅 AWS Step Functions 入门和通过 Step Functions 管理 AWS Batch,了解详情。
- 选择 Start execution(开始执行)来手动运行状态机,从而对其测试。
您可以通过 Amazon CloudWatch,查看运行详情并监控 AWS Batch 日志。
如果遇到任何错误,请参阅有关错误的故障排除部分,了解如何修复这些问题。
设置 EventBridge 计划以调用 Step Functions 状态机
要设置 EventBridge 计划以运行状态机,请完成以下步骤:
- 在 Amazon EventBridge 控制台上,选择 Rules(规则)。
- 选择 Create a new rule(创建新规则)。
- 输入名称(例如,rds-batch-Daily10AM)和描述。
- 对于模式,选择 Schedule(计划),然后选择固定率或定时计划。
要详细了解 EventBridge 计划,请参阅创建按计划运行的 Amazon EventBridge 规则。 - 在 Target(目标)下,选择 Step Functions state machine(Step Functions 状态机),然后选择您创建的状态机。
- 您可以创建新角色或使用现有角色。仔细阅读提示并创建 EventBridge 规则。
- 等待事件运行,并监控状态机和 AWS Batch 作业的运行详细信息。
使用 CloudFormation 模板部署解决方案
您可以使用本文中提供的 CloudFormation 模板来简化设置。
- 从您的 AWS Cloud9 实例运行 git clone 命令,以克隆 GitHub 存储库:
git clone https://github.com/aws-samples/awsnative-batchscript-orchestration.git
- 将工作目录更改为您克隆的 GitHub 存储库的 CloudFormation 文件夹:
cd /home/ec2-user/environment/awsnative-batchscript-orchestration/Cloudformation
- 通过传递参数值,使用以下 AWS CLI 命令运行 CloudFormation 脚本:
aws cloudformation create-stack --stack-name rds-batch-cloudformation --template-body file://rds-batch-scheduler.yaml --parameters ParameterKey=RDSUsername,ParameterValue=<RDS User Name> ParameterKey=RDSPassword,ParameterValue=<RDS Password> ParameterKey=RDSHostName,ParameterValue=<RDS Host Name> ParameterKey=RDSSecretName,ParameterValue=<rds-secret key name that you want to create> ParameterKey=VPC,ParameterValue=<VPC ID for creating Batch Instances> ParameterKey=Subnet,ParameterValue=<Subnet ID for creating Batch Instances> ParameterKey=RDSSecurityGroup,ParameterValue=<Existing RDS database Security group ID> --capabilities CAPABILITY_NAMED_IAM
此模板会创建下列资源:
- Secrets Manager 密钥
- S3 存储桶
- DynamoDB 表
- Amazon ECR 存储库
- AWS Batch 资源:计算环境、队列和作业定义
- 用于通知 AWS Batch 作业故障的 SNS 主题
- Step Functions 状态机
- CloudWatch 事件规则
- AWS KMS 密钥
- 与这些资源关联的角色和权限
查看保存在同一目录下的示例脚本 rds_batch_sql1.sh。这将是您针对 Amazon RDS 数据库运行的批处理脚本。
- 要将 AWS Batch 文件上传到 S3 存储桶,请从 AWS Cloud9 实例运行以下命令,然后复制已上传脚本的 Amazon S3 URI(例如,s3://rdsbatch-123-useast1/rds_batch_sql1.sh)以备将来使用:
aws s3 cp rds_batch_sql1.sh s3://<name of your bucket>/
- 从 CloudFormation 脚本创建的 Amazon ECR 获取 push 命令,然后从 AWS Cloud9 实例工作目录 (cd Cloudformation) 运行 push 命令,将 Docker 镜像上传到 Amazon ECR。
脚本 fetch_and_run_s3script.sh 是 shell 脚本,它使用 AWS CLI 将 AWS Batch 文件复制到容器并运行该文件。
下一步是使用 AWS Batch 参数更新 DynamoDB。 - 在同一工作目录下打开名为 dynamodb_items.json 的 JSON 文件,然后替换 JSON 文件中的作业定义、作业队列和批处理脚本文件位置。您可以从已执行的 CloudFormation 堆栈的 Resources(资源)选项卡中查找作业定义和作业队列。
您可以创建不同的 SQL 脚本,将其上传到 Amazon S3,然后更改 DynamoDB 表中作业的脚本位置 S3 URI。
- 通过 AWS Cloud9 使用以下脚本在 DynamoDB 中创建项,并验证 DynamoDB 表中的项:
aws dynamodb batch-write-item --request-items file://dynamodb_items.json
- 在 EventBridge 控制台上,选择 Rules(规则)。
- 编辑规则 rds-batch-every10minutes 并启用它。
您可以通过 Step Functions 状态机、AWS Batch 监控或 AWS Batch 作业的 CloudWatch 日志来监控计划的运行。如果您遇到诸如 Unable to locate credentials 或 TNS:Connect timeout occurred 之类的故障,请查看有关脚本错误的故障排除部分。
清除
要清除您的资源,请完成以下步骤:
- 使用 AWS Cloud9 实例清空 S3 存储桶:
aws s3 rm s3://<s3 bucket name> --recursive
- 使用 AWS Cloud9 实例清空 Amazon ECR 存储库:
aws ecr batch-delete-image --repository-name <ECR Repository Name> --image-ids imageTag=latest
- 在 CloudFormation 控制台上,删除您使用模板 rds-batch-scheduler.yaml 创建的堆栈。
故障排除
在本部分,我们将提供有关 SQL 脚本错误、检查 AWS Batch 作业状态和 AWS Batch 角色权限的提示。
故障
如果您收到错误 Unable to locate credentials,则表示您的实例无法访问 Secrets Manager。在这种情况下,转到您的 AWS Cloud9 EC2 实例或 AWS Batch 计算实例,然后在 Actions(操作)菜单中,选择 Modify IAM role(修改 IAM 角色),将 AWS Identity and Access Management (IAM) 角色更新为有权访问 Secrets Manager 以使用密钥。
如果您收到错误 TNS:Connect timeout occurred,则表示该实例无法访问 RDS 实例。在这种情况下,更改 Amazon RDS 的安全组,使来自实例安全组的流量通过 port 1521。
如果您收到错误 An error occurred (403) when calling the HeadObject operation: Forbidden – Failed to download S3 script,,则表示 Docker 运行时无法访问上传的 S3 对象。在这种情况下,将 S3 存储桶和对象的列表与读取权限添加到您的角色,请查看存储桶策略示例。
如果您收到错误 An error occurred (AccessDeniedException) when calling the GetSecretValue operation: User: arn:aws:sts::xxxx:assumed-role/yyyy/i-abcd1234 is not authorized to perform: secretsmanager:GetSecretValue on resource: rds-secret because no identity-based policy allows the secretsmanager:GetSecretValue action,,则表示 Docker 运行时无法访问创建的 Secret Manager 密钥。在这种情况下,将 Secret Manager 密钥的读取权限添加到您的角色,请查看 AWS Secrets Manager 密钥的 IAM 策略示例。
AWS Batch 作业状态
以下屏幕截图表明作业已成功完成。
您可以使用 AWS Batch 生成的 CloudWatch 日志来验证作业。以下屏幕截图显示了 AWS Batch 控制台上的作业详细信息。详细信息包含作业的 CloudWatch 日志、针对数据库运行的 SQL 脚本以及日期。
AWS Batch 执行角色权限
您的 AWS Batch 执行角色需要以下设置和权限:
- Trusted entities(信任实体)– ecs-tasks.amazonaws.com
- Policies(策略)– AmazonEC2ContainerServiceRole, AWSBatchServiceRole, CloudWatchEventsFullAccess, AmazonEC2ContainerRegistryReadOnly
要授予对 S3 存储桶和对象的访问权限,请查看如何设置 S3 存储桶策略。要授予对 Secret Manager 密钥的访问权限,请查看 AWS Secrets Manager 密钥的 IAM 策略示例。此外,您可以使用下方所示的示例 JSON 策略为您的角色创建内联策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "secretmanageraccess",
"Effect": "Allow",
"Action": [
"secretsmanager:Get*",
"secretsmanager:List*"
],
"Resource": "arn:aws:secretsmanager:<region>:<account id>:secret:<secret id>
},
{
"Sid": "s3access",
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": ["arn:aws:s3:::<s3 bucket name>",
"arn:aws:s3:::<s3 bucket name>/*"]
}
]
}
如果您对设置进行了任何更改,之后发现 Batch 作业停留在 RUNNABLE 状态,请参见 AWS Batch 作业为何停留在 RUNNABLE 状态?
其他参考
- 使用 AWS CloudFormation 创建和管理 AWS Batch 资源一文重点介绍了 AWS CloudFormation 中支持的原生资源,并演示了如何使用 AWS CloudFormation 创建 AWS Batch 计算环境。
- 通过 AWS Batch 和 Amazon CloudWatch 规则计划和运行 Amazon RDS 作业一文演示了如何使用 AWS Batch 和 CloudWatch 规则,针对 PostgreSQL 数据库动态预置资源及计划和运行函数或存储的程序。
- 创建简单的“获取和运行” AWS Batch 作业一文介绍了如何在 AWS Batch 中创建和运行简单的“获取和运行”作业。
结论
在本文中,我们演示了如何使用 EventBridge、Step Functions 和 AWS Batch 来计划和编排批处理脚本。
您可以使用此解决方案,通过 AWS CLI 运行数据库和 SQL 脚本、bash 脚本、Python 脚本以及特定于 AWS 服务的任务。您还可以扩展该解决方案,以运行使用 PysPark、Scala 或 Java 等编程语言构建的脚本。此外,您可以使用 CloudWatch Logs 和 Amazon SNS 启用警报,并使用 CloudWatch Logs、Amazon S3、Amazon Athena 和 Amazon QuickSight 启用监控。
如果您有任何问题或建议,请留言。
关于作者
Dilin Joy 是 Amazon Web Services 的合作伙伴解决方案架构师。他与一家领先的全球系统集成商 (GSI) 合作,提供架构指导并支持他们在 AWS 上构建战略性行业解决方案。
Roshin Babu 是 Amazon Web Services 的数据分析专家解决方案架构师。他与销售专家团队合作,为 AWS 公共部门客户提供支持。