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

TL;DR

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

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

AWSの公式ドキュメントであるAmazon EC2 リソースにタグを付ける - Amazon Elastic Compute Cloudに書いてある通り、キーがNameのタグの値に名前を入れれば、表示されます。 つまり、Nameタグが未設定なだけだったのです。 以下が当時書いていた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 {
    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"]
  }
}