terraform - 对资源 ID 的动态引用
问题描述
我有一个名为的变量cognito_user_pool
并定义了两个资源。需要参数中aws_cognito_identity_pool
的实例ID 。ID 是由 访问的,但问题是客户端名称保存在变量中。aws_cognito_user_pool_client
client_id
aws_cognito_user_pool_client.MY_CLIENT_NAME.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.
解决方案
但是客户端名称和客户端 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
}
推荐阅读
- c++ - strcpy 不适用于类中的字符串指针
- flutter - Flutter 是否支持级联样式?
- kubernetes - 在 Kubernetes 中公开容器
- eclipse - 如果更改目标平台,则 GenerateDsl.mwe2 错误
- python-3.x - 在设置值时验证 Pydantic 字段
- android - 如何从 Kotlin 中的 RequestBody 获取正文字符串?
- typescript - 确保两个元组参数具有相同数量的元素
- html - 在我的 html 列表中应用图标和文本时遇到缩进问题。如何正确缩进项目?
- flutter - 小部件截断 - Flutter
- javascript - redux 形式的字段规范化