■ はじめに
https://dk521123.hatenablog.com/entry/2023/05/03/000000
の続き。 Terraform の Data Sources(データソース) について扱う。
目次
【1】データリソース - data 【2】利用例 【3】サンプル 例1:AWS S3 例2:AWS Region 【4】filter 1)サンプル
【1】データリソース - data
* 読み取り専用のリソースで Data Sources を定義すると、Terraform で定義されたリソース情報を参照可能 => 既に作成済みのリソースなどの情報を取得できる
https://developer.hashicorp.com/terraform/language/data-sources
【2】利用例
* 手動で作成したVPCのID情報などを取得する
【3】サンプル
例1:AWS S3
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/s3_bucket
data "aws_s3_bucket" "selected" { bucket = "your-s3-bucket-name" } # 使い方 locals { s3_arn = data.aws_s3_bucket.selected.arn }
例2:AWS Region
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region
data "aws_region" "current" { current = true } locals { # AWS Region aws_region = data.aws_region.current.name # account id aws_account_id = data.aws_caller_identity.current.account_id }
provider.tf
# Configure the AWS Provider provider "aws" { }
【4】filter
* filterを使って、リソースを絞り込むことが可能 => 以下のサンプルを見れば、分かると思う
https://qiita.com/yuta_vamdemic/items/be3cf73c8df29a52f5ec
1)サンプル
例1:VPC情報を取得する
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/vpc
# Filter でVPC名「demo-vpc」を指定して # NameタグからVPC情報を取得する例 data "aws_vpc" "vpc" { filter { name = "tag:Name" values = ["demo-vpc"] } } # 使い方 locals { # 上で取得したVPC情報「data.aws_vpc.vpc」から「id」を取得して # vpc_id に設定した例 vpc_id = data.aws_vpc.vpc.id }
例2:Subnet一覧情報を取得する(複数Filter)
https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/subnets
data "aws_subnets" "private_subnets" { # 第一段階として、VPC ID でフィルタを掛ける filter { name = "vpc-id" values = [local.vpc_id] # 例1の local の中にある vpc_id を指定 } # 第二段階として、Subnet名が「demo-subnet-private*」 でフィルタを掛ける filter { name = "tag:Name" values = ["demo-subnet-private*"] } }
関連記事
Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224
Terraform ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/09/222057
Terraform ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/05/03/000000
Terraform ~ 基本編 / Module ~
https://dk521123.hatenablog.com/entry/2023/05/19/113544
Terraform ~ tfstate / Backend ~
https://dk521123.hatenablog.com/entry/2023/05/05/004939
Terraform ~ 基本編 / 変数 ~
https://dk521123.hatenablog.com/entry/2023/12/24/173633
Terraform ~ テンプレート ~
https://dk521123.hatenablog.com/entry/2023/05/22/101325
Terraform ~ Terraformあれこれ ~
https://dk521123.hatenablog.com/entry/2023/05/15/205352
Terraform ~ tfenv / バージョン管理 ~
https://dk521123.hatenablog.com/entry/2023/01/14/000000