

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 管理 AWS Batch 作业定义中的修订
<a name="batch-jobs"></a>

此示例假设您正在使用该 AWS Batch 服务并使用 Terraform 作为 IaC 工具来部署批处理作业。

## Challenge
<a name="batch-job-challenges"></a>

AWS Batch 每次更新都会创建作业定义的新修订版，这会导致修订版本随着时间的推移而积累。这可能会使资源管理复杂化，并混淆哪些修订是最新版本，尤其是在任务定义经常更新且下游资源需要准确引用最新版本的企业环境中。

## 解决方案
<a name="batch-job-solution"></a>

以下 Terraform 代码使用几个关键组件来解决 AWS Batch 修订管理问题。

```
resource "terraform_data" "batch_job_definition_cleanup" {
  triggers_replace = {
    always_run = timestamp()
  }

  provisioner "local-exec" {
    command = "..."  # AWS CLI commands to list and de-register older revisions
  }
}
```

在此代码中：
+ `terraform_data`与`local-exec`预配器结合使用，以便在 Terraform 操作期间运行 AWS Command Line Interface (AWS CLI) 命令。
+ 时间戳触发器可确保每个`terraform apply`命令都运行清理脚本。
+ AWS CLI 集成查询所有活跃 AWS Batch 的作业定义修订版并注销较旧的修订版。
+ 您可以向命令部分添加自定义保留配置，以指定要保留多少最新修订版本。

## 优势
<a name="batch-job-benefits"></a>
+ **简化管理**：防止累积对作业定义的过时修订。
+ **清晰的参考文献**：保留指向当前版本的作业定义的准确指针。
+ **资源优化**：减少 AWS Batch 环境中的混乱。
+ **自动化**：与现有的 Terraform 工作流程完美集成。

这种方法演示了 Terraform 的可扩展性功能如何在保持 IaC 最佳实践的同时克服提供商的限制。您可以将此解决方案用作需要动态资源发现和管理的类似场景的模板。