terraform_remote_stateの使い方

概要

tfstateが分かれている状況で、別のtfstate環境から、別のtfstateの情報を取得したい場合の手順です。

例:prd, devがあったとして、devからprdの情報を参照する場合です。

手順

  1. prd で dev に公開する値をoutputs.tfに記載します。
    例えばグローバルサービスで共通の情報(ACMなど)を記載します。
output "prd" {
  value = {
    # ACM
    acm_main   = aws_acm_certificate.main.arn
    acm_global = aws_acm_certificate.global.arn
  }
}
  1. dev の backend.tf でterraform_remote_stateを指定して、tfstateを参照できるようにします。
data "terraform_remote_state" "prd" {
  backend = "s3"
  config = {
    bucket  = "terraform"
    key     = "prd/terraform.tfstate"
    region  = "ap-northeast-1"
    profile = "example"
  }
}
  1. 参照したいリソース側で下記のようなフォーマットで参照します。
※ALBの証明書設定
certificate_arn   = data.terraform_remote_state.prd.outputs.prd.acm_main