

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# AWS Batch ジョブ定義のリビジョンの管理
<a name="batch-jobs"></a>

この例では、 AWS Batch サービスを使用し、IaC ツールとして Terraform を使用してバッチジョブをデプロイすることを前提としています。

## 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` は、Terraform オペレーション中にプロ`local-exec`ビジョナーと組み合わせてコマンドを実行します AWS Command Line Interface (AWS CLI)。
+ タイムスタンプトリガーは、すべての`terraform apply`コマンドがクリーンアップスクリプトを実行するようにします。
+ AWS CLI 統合は、すべてのアクティブなジョブ定義リビジョン AWS Batch をクエリし、古いリビジョンの登録を解除します。
+ コマンドセクションにカスタム保持設定を追加して、保存する最近のリビジョンの数を指定できます。

## 利点
<a name="batch-job-benefits"></a>
+ **管理の簡素化**: ジョブ定義に古いリビジョンが蓄積されるのを防ぎます。
+ **明確な参照**: ジョブ定義の最新バージョンへの正確なポインタを維持します。
+ **リソースの最適化**: AWS Batch 環境内の乱雑さを軽減します。
+ **自動化**: 既存の Terraform ワークフローとクリーンに統合します。

このアプローチは、IaC のベストプラクティスを維持しながら、Terraform の拡張機能がプロバイダーの制限を克服する方法を示しています。このソリューションは、動的なリソース検出と管理が必要な同様のシナリオのテンプレートとして使用できます。