[英]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.