株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

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設定はマルチプロバイダーで構成するモジュールを作る時とかに使うものみたいです。

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)