TerraformでAWSマルチリージョンでリソースを作成する

概要

  • terraformを利用し、AWSマルチリージョンでリソースを作成したい
  • 別リージョンでmoduleを作成したい

このあたり、必要になるたびにググっているので備忘録として。

AWSリージョンの定義

provider "aws" {
  profile = "default"
  region  = "ap-northeast-1"
}

provider "aws" {
  profile = "default"
  region  = "us-east-1"
  alias   = "virginia"
}

このように、マルチリージョンごとに定義を記載する

data, resource等を別リージョンで宣言する場合

providerを記載してやればOK

data "aws_acm_certificate" "virginia" {
  domain   = "domain.name"
  provider = aws.virginia
}

例えば上記記載でバージニアACMをdataとして参照する

moduleを別リージョンで宣言する場合

こちらもprovidersを記載してやる

module "my_module" {
  source = "./path/to/module"

  hoge = "fuga"

  providers = {
    aws = aws.virginia
  }
}

さらにmodulerequired_providersを記載してやる

terraform {
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 3.27"
    }
  }
}

上記記載をmodule内のどこかのファイルに記載してやればOK