vivekyad4v
vivekyad4v

Reputation: 14853

Terraform - Fetch region from provider and use it in resource name

provider "aws" {
  alias  = "sin"
  region = "ap-southeast-1"
}

provider "aws" {
  alias  = "mum"
  region = "ap-south-1"
}

resource "aws_sns_topic" "alarms_sin" {
  provider = aws.sin

  name = "${local.name_prefix}-alarms-${GET_CURRENT_REGION}"
}

resource "aws_sns_topic" "alarms_mum" {
  provider = aws.mum

  name = "${local.name_prefix}-alarms-${GET_CURRENT_REGION}"
}

Normally, you can use a data block like data "aws_region" "current" {} but it doesn't work in this case.

Upvotes: 0

Views: 2138

Answers (1)

vivekyad4v
vivekyad4v

Reputation: 14853

I was able to resolve it by adding the provider in the data block -

provider "aws" {
  alias  = "sin"
  region = "ap-southeast-1"
}

provider "aws" {
  alias  = "mum"
  region = "ap-south-1"
}

// Change
data "aws_region" "sin" {
  provider = "aws.sin"
}

data "aws_region" "mum" {
  provider = "aws.mum"
}

resource "aws_sns_topic" "alarms_sin" {
  provider = aws.sin

  name = "${local.name_prefix}-alarms-${data.aws_region.sin.name}"
}

resource "aws_sns_topic" "alarms_mum" {
  provider = aws.mum

  name = "${local.name_prefix}-alarms-${data.aws_region.mum.name}"
}

Upvotes: 4

Related Questions