2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[terraform][AWS] ECSタスク定義の更新時に旧リビジョンを残す

Posted at

困っていたこと

AWSの仕様として、ECSのタスク定義は更新ができません。(タグの編集は可)
タスク定義を変更するときには新しいリビジョンを作成する管理方式となっています。

AWSマネジメントコンソールではリビジョンの作成と削除は別操作ですが、 terraform では delete/create になっていました。旧リビジョンは削除されてしまいます。
「旧リビジョンはその瞬間から2度と使わない」と割り切れるのならそれでも構わないのかもしれませんが、残しておきたいケースもあるはずです。

対処方法

なぜか現時点では リファレンス - Resource: aws_ecs_task_definition に記載されていませんが、Terraform AWS Provider v3.72.0 から削除をスキップするフラグ skip_destroy が追加されています。
https://github.com/hashicorp/terraform-provider-aws/pull/22269

このフラグを設定することにより、旧リビジョンを残しつつ新しいリビジョンを作成することが可能になっています。

sample
resource "aws_ecs_task_definition" "ecs_task" {
  family = "sample-task"
  container_definitions = templatefile("./task-definition.json", {
    image_url = "nginx:latest"
  })
  requires_compatibilities = ["FARGATE"]
  network_mode             = "awsvpc"
  cpu                      = "256"
  memory                   = "512"
+ skip_destroy             = true
  lifecycle {
      ignore_changes = [container_definitions]
  }
}

現時点での問題点

  • リファレンスに記載されていない件については、 こちらのissue で提起されています。
  • 削除されないにも関わらず、plan/apply で destroy の対象として表示・カウントされています。それについては こちらのissue で提起されています。
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?