模块.是一个对象,只有在应用后才知道



我正试图在aws中为dyanamo db表创建一个名为name和arn的ssm参数,以便其他应用程序可以引用它。我尝试了一些不同的事情,但不明白我在这里做错了什么。有人能告诉我这里出了什么问题吗?

谢谢

这是我的模块主文件。

主.tf

locals {
prefix = "/this/is/a/test"
}
module "test_table" {
source = "git@github.com:test/terraform-modules.git//dynamodb"
name                  = "dynamo-${local.environment}"
ssm_parameter_prefix  = local.prefix
tags = {
Environment  = local.environment
}
}
resource "aws_ssm_parameter" "table_name" {
provider = aws.east
name     = "${local.prefix}/new/table-name"
type     = "String"
value    = module.test_table.name
}
resource "aws_ssm_parameter" "table_arn" {
provider = aws.east
name     = "${local.prefix}/new/table-arn"
type     = "String"
value    = module.test_table.arn
}

这是输出

输出.tf

output "test_table" {
value = module.test_table
}
output "table_arn" {
value       = module.test_table.arn
}
output "table_name" {
value       = module.test_table.name
}

Terraform错误

│ Error: Unsupported attribute
│ 
│   on dynamo.tf line, in resource "aws_ssm_parameter" "table_name":
│  118:   value    = module.test_table.name
│     ├────────────────
│     │ module.test_table is a object, known only after apply
│ 
│ This object does not have an attribute named "name".
╵
╷
│ Error: Unsupported attribute
│ 
│   on dynamo.tf line, in resource "aws_ssm_parameter" "table_arn":
│  125:   value    = module.test_table.arn
│     ├────────────────
│     │ module.test_table is a object, known only after apply
│ 
│ This object does not have an attribute named "arn".
╵

您显示的output块声明名为table_arntable_name的输出值,但您的引用是module.test_table.namemodule_test.table.arn

您需要更改输出值名称以匹配引用,或者更改引用以匹配输出值名称。具体来说,您需要从每个输出值名称中删除table_前缀,或者table_添加到module.test_table.table_namemodule.test_table.table_arn等引用的前面。

相关内容

  • 没有找到相关文章

最新更新