Terraform -- 访问在同一个 main.tf 文件中创建的资源

Terraform -- access resource which is created in the same main.tf file

我创建了一个 Secret Manager AWS 资源并想在同一个 main.tf 文件中访问它的 ARN。

这是我的地形 main.tf

variable "ENV" {}
variable "TAGS" {}

// SECRET MANAGER
resource "aws_secretsmanager_secret" "service_name_sm" {
  name = "service-name-sm-test"
  tags = var.TAGS
}

// POLICY
resource "aws_iam_policy" "service_name_policy" {
  name = "${var.service_name_policy_name}-${var.ENV}"
  path = "/"
  policy = templatefile(
    "${path.module}/templates/${var.service_name_policy_name}.tmpl", {
      secrets_manager_arn = resource.aws_secretsmanager_secret.service_name_sm.arn
  })
}

在我创建的策略中,我想使用我创建的 aws_secretsmanager_secret 资源的 ARN。

当我 运行, terraform validate 我得到一个错误:

A managed resource "resource" "aws_secretsmanager_secret" has not been
declared in service_name.

我该怎么做?

你不需要用 resource. 作为前缀。你必须像这样引用它 aws_secretsmanager_secret.service_name_sm.

policy = templatefile(
  "${path.module}/templates/${var.service_name_policy_name}.tmpl", {
    secrets_manager_arn = aws_secretsmanager_secret.service_name_sm.arn
})