动态引用资源ID

时间:2019-11-26 02:19:27

标签: terraform terraform-provider-aws

我有一个名为cognito_user_pool的变量,并定义了两个资源。 aws_cognito_identity_poolaws_cognito_user_pool_client参数中需要client_id的实例ID。 aws_cognito_user_pool_client.MY_CLIENT_NAME.id访问该ID,但是问题是客户端名称保存在cognito_user_pool变量中。

我的问题是如何在不对客户端名称进行硬编码的情况下获取ID。

以下设置无效:

resource "aws_cognito_user_pool_client" "example" {
  name         = var.cognito_user_pool
  user_pool_id = aws_cognito_user_pool.pool.id
}

resource "aws_cognito_identity_pool" "main" {
  identity_pool_name               = var.cognito_user_pool
  allow_unauthenticated_identities = false

  cognito_identity_providers {
    client_id               = aws_cognito_user_pool_client[var.cognito_user_pool].id
    provider_name           = aws_cognito_user_pool.pool.endpoint
    server_side_token_check = false
  }
}

产生:

Error: Invalid reference

  on setup.tf line 26, in resource "aws_cognito_identity_pool" "main":
  26:     client_id               = aws_cognito_user_pool_client[var.cognito_user_pool]

A reference to a resource type must be followed by at least one attribute
access, specifying the resource name.

1 个答案:

答案 0 :(得分:1)

但是客户端名称和客户端ID不同。如果相同,则可以使用该变量。

我认为问题在于您访问/引用的客户端ID错误。

cognito_identity_providers中的resource "aws_cognito_identity_pool" "main"块应为:

  cognito_identity_providers {
    client_id               = aws_cognito_user_pool_client.example.id
    provider_name           = aws_cognito_user_pool.pool.endpoint
    server_side_token_check = false
  }