Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Terraform 对资源id的动态引用_Terraform_Terraform Provider Aws - Fatal编程技术网

Terraform 对资源id的动态引用

Terraform 对资源id的动态引用,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我定义了一个名为cognito\u user\u pool的变量和两个resurceaws\u cognito\u identity\u pool需要client\u ID参数中aws\u cognito\u user\u pool\u client的实例ID。该ID由aws\u cognito\u user\u pool\u client.MY\u client\u NAME.ID访问,但问题是客户端名称保存在cognito\u user\u pool变量中 我的问题是如何在不硬编码客户端名称

我定义了一个名为
cognito\u user\u pool
的变量和两个resurce
aws\u cognito\u identity\u pool
需要
client\u ID
参数中
aws\u cognito\u user\u pool\u client
的实例ID。该ID由
aws\u cognito\u user\u pool\u client.MY\u client\u NAME.ID
访问,但问题是客户端名称保存在
cognito\u user\u 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.

但是客户端名称和客户端id不相同。如果它是相同的,那么您可以使用变量

我认为问题在于您访问/引用的客户端id不正确

资源“aws\u cognito\u identity\u pool”main中的
cognito\u identity\u providers
块应为:

  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
  }

我想我曾经有过这样的一个晚上,最好还是睡一觉,第二天再试一次。当然,我现在明白你的意思了。谢谢你,伙计!