Как я могу сослаться на идентификатор aws_cognito_user_pools в `Terraform`? - PullRequest
0 голосов
/ 26 апреля 2020

У меня ниже конфигурация 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"
}
...