繁体   English   中英

AWS ECR 存储库的跨区域复制

[英]Cross region replication of AWS ECR repository

我正在尝试使用 terraform 将我的 AWS ECR 存储库复制到同一账户中的多个区域。 我从 AWS 控制台手动尝试它工作正常,但从 terraform,我无法找到解决方案。 我尝试了什么:我尝试为名为 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"
  }
}}}

谁能帮帮我?

谢谢,

您的replicate_region应该是 string ,而不是字符串列表。 它应该是,例如:

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

更新

使用动态块进行迭代。

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

更简单的方法:

resource "aws_ecr_replication_configuration" "replication" {
  replication_configuration {
    rule {
      destination {
        region      = "us-east-2"
        registry_id = "xxxxxxxx"
      }
      destination {
        region      = "ap-southeast-1"       
        registry_id = "xxxxxxxx"
      }
    }
  }
}
variable "replicas" {
  description = "ECR replicas region list"
  type        = list(string)
  default = [
    {
      region      = "aaa"
      registry_id = "11111111"
    },
    {
      region      = "bbb"
      registry_id = "22222222"
    }
  ]
}

resource "aws_ecr_replication_configuration" "replication" {
  count = length(var.replicas) != 0 ? 1 : 0

  replication_configuration {
    rule {
      dynamic "destination" {
        for_each = var.replicas
        content {
          region      = destination.value.region
          registry_id = destination.value.registry_id
        }
      }
      repository_filter {
        filter      = var.filter
        filter_type = "PREFIX_MATCH"
      }
    }
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM