データソースブロックのフォーマット

AMI、アベイラビリティゾーン、IAMポリシー、リモートステート参照を含む既存インフラの検索用Terraformデータソースブロックをフォーマットします。

Advanced Patterns

詳細な説明

データソースブロックのフォーマット

データソースはTerraformが管理していない既存のインフラを参照できます。リソースと同じフォーマットルールに従いますが、dataキーワードを使用します。

一般的なデータソースの例

data "aws_availability_zones" "available" {
  state = "available"

  filter {
    name   = "opt-in-status"
    values = ["opt-in-not-required"]
  }
}

data "aws_ami" "ubuntu" {
  most_recent = true
  owners      = ["099720109477"]

  filter {
    name   = "name"
    values = ["ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-*"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }
}

data "aws_caller_identity" "current" {}
data "aws_region" "current" {}

リモートステートデータソース

data "terraform_remote_state" "network" {
  backend = "s3"

  config = {
    bucket = "my-terraform-state"
    key    = "network/terraform.tfstate"
    region = "us-east-1"
  }
}

フォーマットの詳細

  • 空のデータソース: data "aws_caller_identity" "current" {}は1行に収まる
  • filterブロック: 各filterブロックのnamevalues属性が揃う
  • 複数フィルター: 明確さのために空行で区切り
  • コメント: インラインコメントは保持され揃えられる
  • configブロック: リモートステートのネストされたconfigブロックは同じ揃えルールに従う

ユースケース

既存のAWSリソースのクエリ、EC2インスタンス用の最新AMIの検索、他のTerraform設定からのリモートステート出力の参照。

試してみる — Terraform HCL Formatter

フルツールを開く