Terraform経由で作成したEC2にNameをつける

AWSを利用している方なら基本中の基本だと思いますが、EC2の管理画面を見ているとNameという列があり、Terraformで作成していると空になっています. これは何故でしょうか?

TL;DR

  • Nameタグを設定すれば表示される

何故、表示されないのか?

AWSの公式ドキュメントであるAmazon EC2 リソースにタグを付ける - Amazon Elastic Compute Cloudに書いてある通り、キーがNameのタグの値に名前を入れれば、表示されます.
つまり、Nameタグが未設定だったので表示されていませんでした.

resource "aws_instance" "khasegawa" {
  ami                     = "${data.aws_ami.image_id}"
  instance_type           = "${var.instance_type}"
  disable_api_termination = false
  subnet_id               = "${aws_subnet.khasegawa.id}"

  tags {
    Administrator = "${var.email}"
    Environment   = "${var.environment}"
  }

  lifecycle {
    "ignore_changes" = ["ami"]
  }
}

tagsに見事にNameを書いてませんね.

Nameタグを設定する

Nameタグを設定した方がEC2インタンスだけでなく、他のAWSリソースでも判別しやすくなります.
適切な名前を設定をしましょう.
先程のtfファイルに追記すると、こうなります.

resource "aws_instance" "khasegawa" {
  ami                     = "${data.aws_ami.image_id}"
  instance_type           = "${var.instance_type}"
  disable_api_termination = false
  subnet_id               = "${aws_subnet.khasegawa.id}"

  tags {
    Name          = "${var.environment}" # NOTE: 追記
    Administrator = "${var.email}"
    Environment   = "${var.environment}"
  }

  lifecycle {
    "ignore_changes" = ["ami"]
  }
}