🦁

TerraformでAWS BatchのJob QueueとCompute Environmentをいい感じに管理する

に公開

課題

TerraformでAWS BatchのJob QueueとCompute Environment(CE)を管理している。CEに変更を加えようとすると再作成となることがあるのだが、再作成となるCEとJob Queueが紐付いていると再作成できずapplyがエラーとなってしまう。

解決策

以下のテクニックを用いることでapply時のエラーを回避できる。

  1. create_before_destroy
  2. compute_environment_name_prefix

まず、CEのライフサイクルポリシーとして create_before_destroy = true を設定する。これによりapply時にまず新しいCEを作成してJob Queueに紐付けた後、古いCEを削除という挙動にできる。次にCEのリソース名定義にcompute_environment_name_prefixを使う。create_before_destroy = true を設定した場合、CEのリソース名定義に compute_environment_nameを使うと同じ名前のリソースが作られようとしてエラーとなる。compute_environment_name_prefixを使うことでユニークな名前を維持できる。

Discussion