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
的变量和两个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
变量中
我的问题是如何在不硬编码客户端名称的情况下获取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
}
我想我曾经有过这样的一个晚上,最好还是睡一觉,第二天再试一次。当然,我现在明白你的意思了。谢谢你,伙计!