#amazon-web-services #terraform #terraform-provider-aws
Вопрос:
Я пытаюсь написать код терраформирования для создания рабочих пространств и буду использовать его также для создания в будущем. Я столкнулся с проблемой при ссылке на bundle_ids, так как доступно несколько пакетов, и они меняются в соответствии с запросом. каждый раз. если кто-нибудь может предложить лучший подход к этому.
resource "aws_workspaces_workspace" "this" {
directory_id = var.directory_id
for_each = var.workspace_user_names
user_name = each.key
bundle_id = [local.bundle_ids["${each.value}"]]
root_volume_encryption_enabled = true
user_volume_encryption_enabled = true
volume_encryption_key = var.volume_encryption_key
workspace_properties {
user_volume_size_gib = 50
root_volume_size_gib = 80
running_mode = "AUTO_STOP"
running_mode_auto_stop_timeout_in_minutes = 60
}
tags = var.tags
}
terraform.tfvars
directory_id = "d-xxxxxxx"
##Add the Workspace Username amp; bundle_id;
workspace_user_names = {
"User1" = "n"
"User2" = "y"
"User3" = "k"
}
locals.tf
locals {
bundle_ids = {
"n" = "wsb-nn"
"y" = "wsb-yy"
"k" = "wsb-kk"
}
}
План терраформирования
Error: Incorrect attribute value type
│
│ on r_aws_workspaces.tf line 8, in resource "aws_workspaces_workspace" "this":
│ 8: bundle_id = [local.bundle_ids["${each.value}"]]
│ ├────────────────
│ │ each.value will be known only after apply
│ │ local.bundle_ids is object with 3 attributes
│
│ Inappropriate value for attribute "bundle_id": string required.
Комментарии:
1. Я также заметил, что почти на все ваши вопросы есть ответы, но ни один из них не принят. Принятие хороших ответов-это не только хорошая практика, но и уменьшает количество дубликатов и увеличивает шансы на то, что на ваши вопросы действительно будут даны ответы.
Ответ №1:
При движении у вас есть list
, но так и должно быть string
. Предполагая, что все остальное правильно, следующее должно устранить вашу ошибку:
bundle_id = local.bundle_ids[each.value]
Комментарии:
1. это действительно исправило ошибку; но, глядя в более широкий контекст, есть ли лучший способ сделать это. т. Е. написать модуль, а затем вызвать их или что-нибудь еще.
2. @Zuntoo, если мой ответ был полезен, мы будем признательны за его принятие. Я бы предложил задать новый вопрос относительно модулей с соответствующими подробностями.