Terraform AWS Cognito App Client

时间:2017-12-06 15:44:00

标签: amazon-web-services amazon-cognito devops terraform

目前陷入困境,试图建立一个应用客户端'对于通过Terraform的AWS Cognito用户池。这是我的资源:

resource "aws_cognito_user_pool" "notes-pool" {
  name = "notes-pool"
  username_attributes = ["email"]

  verification_message_template {
    default_email_option = "CONFIRM_WITH_CODE"
  }

  password_policy {
    minimum_length    = 10
    require_lowercase = false
    require_numbers   = true
    require_symbols   = false
    require_uppercase = true
  }

  tags {
    "Name"    = "notes-pool"
    "Environment" = "production"
  }
}

以上工作正常,我的用户池已创建。如果有人对如何在同一资源中创建应用客户端有任何想法,我会全力以赴。我开始怀疑这个功能不存在!

3 个答案:

答案 0 :(得分:4)

我相信这只是添加到最近的terraform版本中。您可以执行以下操作将客户端添加到用户池:

 resource "aws_cognito_user_pool_client" "client" {
     name = "client"
     user_pool_id = "${aws_cognito_user_pool.pool.id}"
     generate_secret = true
     explicit_auth_flows = ["ADMIN_NO_SRP_AUTH"]
 }

请参阅此处了解文档:Terraform entry on aws_cognito_user_pool_client

答案 1 :(得分:3)

Terraform目前不支持此功能。

有一个open issue on GitHub已经请求过了(如果你能从这个功能中受益,请大家竖起来)。

在添加支持之前,最好的选择是在创建资源后使用local-exec配置程序通过CLI创建用户池:

resource "aws_cognito_user_pool" "notes-pool" {
  name = "notes-pool"

  username_attributes = ["email"]
  ...

  provisioner "local-exec" {
    command = <<EOF
aws cognito-idp create-user-pool-client \
  --user-pool-id ${aws_cognito_user_pool.notes-pool.id} \
  --client-name client-name \
  --no-generate-secret \
  --explicit-auth-flows ADMIN_NO_SRP_AUTH
EOF
  }
}

请注意,要使用此功能,您必须安装AWS CLI并进行身份验证(我使用环境变量对Terraform和AWS CLI进行身份验证)。

答案 2 :(得分:-1)

创建用户池后,您可以使用create-user-pool-client API在用户池中创建app-client。请参阅API文档:https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateUserPoolClient.html