#amazon-web-services #amazon-s3 #terraform #terraform-provider-aws
Вопрос:
Я пытаюсь передать значения s3 name и create_user в локальный блок в main.tf так что оба они имеют значение в списке, а затем я передаю list_of_bucket в локальном блоке в модуле s3 для создания сегментов и зацикливания user_to_create в модуле s3_user для создания пользователя, если логическое значение равно true. Все эти значения передаются в переменную.tf, а затем к main.tf
dev.tfvars
wea-nonprod = {
services = {
s3 = [
sthree = {
create_user = true,
}
sfour = {
create_user = true,
}
sfive = {
create_user = true,
}
]
}
}
variable.tf
variable "s3_buckets" {
type = list(map)
}
main.tf
locals {
users_to_create = ""
list_of_buckets = ""
}
module "s3" {
source = "../../s3"
name = join("-", [var.name_prefix, "s3"])
tags = merge(var.tags, {Name = join("-", [var.name_prefix, "s3"])})
buckets = list_of_buckets
sse_algorithm = "AES256"
access_log_bucket_name = var.access_log_bucket_name
}
module "s3_user" {
for_each = local.users_to_create
source = "./service-s3-bucket-user"
name = join("-", [var.name_prefix, each.key])
tags = var.tags
bucket_arn = module.s3.bucket_arns[each.key]
depends_on = [module.s3]
}
Комментарии:
1. Пожалуйста, не задавайте повторяющихся вопросов. Там уже опубликован ответ. Если это не сработает, пожалуйста, прокомментируйте это и объясните, что не так, чтобы отвечающий мог потенциально внести в него изменения.
Ответ №1:
Просто пролистайте свою wea-nonprod
карту:
locals {
users_to_create = [ for name in var.wea-nonprod.services.s3 if name.create_user == true ]
list_of_buckets = [ for bucket in var.wea-nonprod.services.s3 ]
}
И несколько изменений в ваших блоках модулей:
module "s3" {
source = "../../s3"
name = "${var.name_prefix}-s3"
tags = merge(var.tags, { Name = "${var.name_prefix}-s3" })
buckets = local.list_of_buckets
sse_algorithm = "AES256"
access_log_bucket_name = var.access_log_bucket_name
}
module "s3_user" {
count = length(local.users_to_create)
source = "./service-s3-bucket-user"
name = "${var.name_prefix}${local.users_to_create[count.index]}"
tags = var.tags
bucket_arn = module.s3.bucket_arns[local.users_to_create[count.index]]
depends_on = [module.s3]
}