Terraform-从提供程序获取区域并在资源名称中使用它

问题描述

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}"
}

通常,您可以使用data "aws_region" "current" {}之类的数据块,但在这种情况下不起作用。

解决方法

我能够通过在数据块中添加提供程序来解决它-

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}"
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...