Terraformデータソースをjsonに変換する
既存インフラを照会するTerraformデータソースブロックをHCLからJSONに変換します。AMIルックアップ、アベイラビリティゾーン、IAMポリシーを解説します。
Advanced
詳細な説明
Terraformデータソース
データソースによりTerraformは既存のインフラや外部サービスから情報を読み取ることができます。dataブロックタイプを使用し、読み取り専用です。
HCLデータソースの例
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_availability_zones" "available" {
state = "available"
}
JSON構造
データソースはリソースと同じネストパターンに従います:data > データソースタイプ > データソース名 > 属性。
複数のfilterブロック
複数のfilterブロックが存在する場合、JSON配列にまとめられます。各filterブロックは配列のオブジェクトになります。
IAMポリシードキュメント
aws_iam_policy_documentデータソースは最も複雑なものの1つで、ネストされたstatement、principals、conditionブロックを持ちます。JSON表現はこのネストを忠実に反映します。
データソース参照
データソースの値はHCLでdata.aws_ami.ubuntu.idとして参照されます。これらの式はJSON出力では文字列になります。
ユースケース
EC2インスタンス用の最新AMIの検索、動的インフラのための利用可能なAZの照会、IAMポリシーのプログラマティック生成、既存インフラを参照するTerraform設定の構築。