データソースブロックのフォーマット
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ブロックのnameとvalues属性が揃う - 複数フィルター: 明確さのために空行で区切り
- コメント: インラインコメントは保持され揃えられる
- configブロック: リモートステートのネストされた
configブロックは同じ揃えルールに従う
ユースケース
既存のAWSリソースのクエリ、EC2インスタンス用の最新AMIの検索、他のTerraform設定からのリモートステート出力の参照。