У меня ниже конфигурация terraform для клиента Cognito:
data "aws_cognito_user_pools" "re_user_pool" {
name = "${var.cognito_user_pool_name}"
}
resource "aws_cognito_user_pool_client" "app_client" {
name = "re-app-client"
user_pool_id = data.aws_cognito_user_pools.re_user_pool.id
depends_on = [data.aws_cognito_user_pools.re_user_pool]
explicit_auth_flows = ["USER_PASSWORD_AUTH"]
prevent_user_existence_errors = "ENABLED"
allowed_oauth_flows_user_pool_client = true
allowed_oauth_flows = ["code"]
allowed_oauth_scopes = ["phone", "openid", "email", "profile", "aws.cognito.signin.user.admin"]
supported_identity_providers = ["COGNITO", "Google"]
callback_urls = ["https://scnothzsf0.execute-api.ap-southeast-2.amazonaws.com/staging/signup"]
}
Я ссылаюсь на пул пользователей Cognito, который уже существует на AWS. Ошибка происходит в строке user_pool_id = data.aws_cognito_user_pools.re_user_pool.id
, когда она использует идентификатор пула пользователей в aws_cognito_user_pool_client
. Я получу ошибку
Error: Error creating Cognito User Pool Client: InvalidParameterException: 1 validation error detected: Value 're-user' at 'userPoolId' failed to satisfy constraint: Member must satisfy regular expression pattern: [\w-]+_[0-9a-zA-Z]+
on infra/cognito.tf line 5, in resource "aws_cognito_user_pool_client" "app_client":
5: resource "aws_cognito_user_pool_client" "app_client" {`
Кажется, формат идентификатора неверен. Я прочитал этот документ https://www.terraform.io/docs/providers/aws/d/cognito_user_pools.html
, и у него есть справочный атрибут ids - The list of cognito user pool ids.
. Интересно, почему он дает список идентификаторов пользователей пула. Как я могу ссылаться на этот идентификатор?
Я также пытался ссылаться на него как user_pool_id = data.aws_cognito_user_pools.re_user_pool.ids[0]
, но получил ошибку:
Error: Invalid index
on infra/cognito.tf line 8, in resource "aws_cognito_user_pool_client" "app_client":
8: user_pool_id = data.aws_cognito_user_pools.re_user_pool.ids[0]
This value does not have any indices.
Здесь указан re_user_pool
, указанный выше:
resource "aws_cognito_user_pool" "re_user_pool" {
name = "re-user"
}