我的 variables.tf 檔案中有一個復雜型別(物件)的 AWS s3 生命周期規則,并將其分配給一個變數。之后,我使用 for_each 回圈迭代物件并將此變數從父模塊傳遞到子模塊,在該子模塊中創建 s3 資源,我被卡住了,我不確定我的方法是否正確。我知道 for_each 回圈只接受地圖和集合,但我找不到任何資源來將物件轉換為地圖,我很困惑是否應該在我的情況下將物件轉換為地圖。
父模塊:(variables.tf)
variable "lifecycle_rule_60_days" {
type = object({
life_id = string
prefix_val = string
bucket_enabled = bool
expiration_list = object({
expiration_days = number
})
})
default = {
life_id = "abc"
prefix_val = "test"
bucket_enabled = true
expiration_list = {
expiration_days = 20
}
}
}
父模塊:(main.tf)
module "xyz-parent-module" {
source = "./aws-module/s3-bucket-module"
for_each = var.lifecycle_rule_60_days
lifecycle_id = each.value["life_id"]
prefix_value = each.value["prefix_val"]
enabled_value = each.value["bucket_enabled"]
days_value = each.value["expiration_days"]
}
子模塊 - s3-bucket-module: (variables.tf)
variable "rule_xyz" {
type = object({
lifecycle_id = string
prefix_value = string
enabled_value = bool
expiration_days = object({
days_value = number
})
})
default = {
lifecycle_id = "testing-bucket"
prefix_value = "dev"
enabled_value = true
expiration_days = {
days_value = 60
}
}
}
子模塊 - s3-bucket-module: (main.tf)
resource "aws_s3_bucket" "bucket_a" {
bucket = "bucket_a"
for_each = var.rule_xyz
id = each.value["lifecycle_id"]
prefix = each.value["prefix_value"]
enabled = each.value["enabled_value"]
days = each.value["days_value"]
}
在terraform plan我收到以下錯誤后:
Error: Unsupported argument in module "xyz-parent-module"
An argument named "lifecycle_id" is not expected here.
Error: Unsupported argument in module "xyz-parent-module"
An argument named "prefix_value" is not expected here.
Error: Unsupported argument in module "xyz-parent-module"
An argument named "enabled_value" is not expected here
Error: Unsupported argument in module "xyz-parent-module"
An argument named "days_value" is not expected here
我是 Terraform 的新手并使用 Terraform v1.0.5,下面的錯誤對我也嘗試搜索但沒有任何幫助沒有任何幫助。我正在嘗試在過去兩天內實施它。如果有人能指導我做錯了什么,我將不勝感激。
uj5u.com熱心網友回復:
你的父模塊xyz-parent-module應該像這樣傳遞變數 rule_xyz: -
module "xyz-parent-module" {
source = "./aws-module/s3-bucket-module"
for_each = var.lifecycle_rule_60_days
rule_xyz = {
lifecycle_id = each.value["life_id"]
prefix_value = each.value["prefix_val"]
enabled_value = each.value["bucket_enabled"]
expiration_days = {
days_value = each.value["expiration_list"].expiration_days
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/443110.html
