Amazon web services AWS ECR存储库的跨区域复制

Amazon web services AWS ECR存储库的跨区域复制,amazon-web-services,terraform,amazon-ecr,terragrunt,elastic-container-registry,Amazon Web Services,Terraform,Amazon Ecr,Terragrunt,Elastic Container Registry,我正在尝试使用terraform将我的AWS ECR存储库复制到同一帐户内的多个区域。我在AWS控制台上手动尝试过,效果很好,但在terraform上,我找不到解决方案。 我尝试的是: 我尝试为区域创建一个单独的变量,名为replicate_region,并尝试在列表中提供该区域,但它一直给我一个错误,名为replicate_region 属性“区域”的值不正确:需要字符串 以下是变量代码: variable "replicate_region" { description

我正在尝试使用terraform将我的AWS ECR存储库复制到同一帐户内的多个区域。我在AWS控制台上手动尝试过,效果很好,但在terraform上,我找不到解决方案。 我尝试的是: 我尝试为区域创建一个单独的变量,名为replicate_region,并尝试在列表中提供该区域,但它一直给我一个错误,名为replicate_region

属性“区域”的值不正确:需要字符串

以下是变量代码:

variable "replicate_region" {
 description = "value"
 type = list(string)
}
以下是我的ecr复制代码:

resource "aws_ecr_replication_configuration" "replication" {
 replication_configuration {
  rule {
   destination {
     region      = var.replicate_region
     registry_id = "xxxxxxxx"
  }
}}}
谁能帮帮我吗


谢谢,

您的
复制\u区域
应该是字符串,而不是字符串列表。它应该是,例如:

variable "replicate_region" {
 description = "value"
 type = string
 default = "us-east-1"
}
更新

迭代使用


是的,就一个地区而言,我本可以按照你建议的方式使用它。但我需要多个区域作为复制的一部分。例如,如果我在美国东部1区创建了一个ECR回购协议,并希望在ap-south-1和ap-south-1区复制该协议。@pawan19,那么您必须像更新后的答案一样进行迭代。但我不确定你是否可以有多个aws\u ecr\u复制\u配置,或者aws只支持一个配置。它起作用了,但奇怪的是,我默认只输入了两个区域[ap-south-1和ap-south-1],地形被视为从south-1到south-1的区域变化。。。你能给我一个提示来解决这个问题吗region=“ap-south-1”->“ap-south-1”@pawan19我不知道你说的变化是什么意思?在TF应用后,它改变了地区?非常感谢所有的帮助Marcin…它得到了解决:)
variable "replicate_region" {
 description = "value"
 type = list(string)
 default = ["us-east-1", "ap-southeast-1", "ap-south-1"]
}

resource "aws_ecr_replication_configuration" "replication" {

 replication_configuration {
  rule {

   dynamic "destination" {

       for_each = toset(var.replicate_region) 

       content {
         region      = destination.key
         registry_id = "xxxxxxxx"
      }
  }
}}}