dataブロックの使用を最小限にする
ルール
Minimize the use of data blocks. If used, place them immediately above the resource block that references them.
(dataブロックの使用を最小限にする。使用する場合は、参照するリソースブロックの直前に配置する)
解説
dataブロックは便利なのですが、AWS APIへの問い合わせが行われるため、多用するとTerraformの実行が遅くなります。 そのため使わなくてもよい場面ではDataブロックではなくvariablesを利用します。
ただし禁止ではないため、使用することもあります。その場合はなるべく読みやすいよう参照するリソースの直前に配置します。
サンプルコード
# 使用するリソースの直前にdataブロックを配置
data "aws_ami" "ubuntu" {
most_recent = true
owners = ["099720109477"] # Canonical
filter {
name = "name"
values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"]
}
}
resource "aws_instance" "web" {
ami = data.aws_ami.ubuntu.id
instance_type = "t3.micro"
}
参考リンク
- https://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/terraform-aws-provider-best-practices/structure.html
- https://developer.hashicorp.com/terraform/language/data-sources
dataブロックの使用を最小限にする https://www.tricrow.com/infrastructure/development-guidline/coding_standards.style.data.html

