当前卡在泥中,试图通过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"
}
}
上面的工作正常,并且我的用户池被创建。如果有人对如何在同一资源中创建应用程序客户端有任何想法,那么我都是耳朵。我开始怀疑此功能不存在!
我相信这只是添加到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"]
}
请参阅此处的文档:AWS_COGNITO_USER_POOL_CLIENT上的Terraform条目
update - 现在由Terraform支持。请参阅 @Cyram的答案。目前,Terraform支持此功能。
在GitHub上有一个空旷的问题,请求此问题(如果您将从此功能中受益,请对其进行大拇指)。
在添加支持之前,最好的选择是在创建资源后,使用local-exec
Provisioner通过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进行身份验证)。
创建用户池后,您可以使用create-user-pool-client api在用户池内创建应用程序 - 客户。请参阅API文档:https://docs.aws.amazon.com/cognito-user-indistity-pools/latest/apireference/api_createuserpoolpoolclient.html