Terraform リソースの命名規則を考える
異論は認めるし、手探りなので特にこれと言った答えはない。
Terraformではリソースに名前をつける(terraform_res_name
の部分)。
resource "aws_s3_bucket" "terraform_res_name" { bucket = "enq-${var.env}-${var.service}-private" acl = "private" tags { Name = "${var.env_tag}-${var.service_tag}-Private" Environment = "${var.env_tag}" ServiceName = "${var.service_tag}" } }
これは、Terraformのコード内で値を参照したいときに利用される。
基本はスネークケースなので、参照するときもスネークケースになるように_
でつなぐ。どんなリソースかは、リソース名に書いてあるので、冗長にならないように付けない。たとえば、サムネイル画像サーバ用のS3バケットだった場合thumbnail_image
とつける(Nameとかはケバブケースでつける)。
resource "aws_s3_bucket" "thumbnail_image" { bucket = "foo-${var.env}-${var.service}-private" acl = "private" tags { Name = "${var.env_tag}-${var.service_tag}-Private" Environment = "${var.env_tag}" ServiceName = "${var.service_tag}" } }
バケットを参照するときは、${aws_s3_bucket.thumbnail_image.bucket}
となる。
環境は、変数から注入してタグなどに埋め込むので気にしなくて良いとおもう。リソース名に変数は使えない issue-#571。とは言えこういう話もある issue-#1976。