providerのconfiguration_aliasesでハマったのでメモ。
たとえば、AWS Ceritificate Managerのモジュールがあるとします。
この場合、CloudFrontから割り当てたい場合と、ALBから割り当てたい場合などがあり、CloudFrontはus-east-1リージョン、ALBはap-northeast-1リージョンで作成したいので、それぞれ別のプロバイダー設定を渡す必要があります。
aws → デフォルトのプロバイダーでap-northeast-1
aws.virginia → cloudFrontを作りたいときに読み込んでもらうプロバイダー
まずダメな例。
こうすると、このモジュールでは、2つのプロバイダーが必要。ということになる。
terraform {
required_version = "= 1.3.9"
required_providers {
aws = {
source = "hashicorp/aws"
version = "= 4.57.0"
configuration_aliases = [aws, aws.virginia]
}
}
}
OKな例。単純にconfiguration_aliasesを定義しなければ良い。
terraform {
required_version = "= 1.3.9"
required_providers {
aws = {
source = "hashicorp/aws"
version = "= 4.57.0"
}
}
}
呼び出す場合の書き方
module "acm" {
source = "./../../modules/acm"
sub_domain_name = "backend-alb"
hosted_zone_name = var.hosted_zone_name
providers = {
aws = aws
}
}
module "acm" {
source = "./../../modules/acm"
sub_domain_name = var.sub_domain_name
hosted_zone_name = var.hosted_zone_name
providers = {
aws = aws.virginia
}
}
providerはこのような感じで定義
provider "aws" {
region = local.region
default_tags {
tags = {
env = local.env
project = local.system_name
}
}
}
provider "aws" {
region = "us-east-1"
alias = "virginia"
default_tags {
tags = {
env = local.env
project = local.system_name
}
}
}
どうやら、このconfiguration_aliases設定はマルチプロバイダーで構成するモジュールを作る時とかに使うものみたいです。
