5

本着基础设施即代码的精神,我使用有用的aws_cognito_user_pool资源通过 Terraform 配置了 AWS Cognito 用户池。

但是,我似乎无法在MFA 和验证部分下找到帐户恢复首选项的参数/配置映射。

如果没有说明,这似乎是我的默认选择:

(不推荐)电话(如果可用),否则发送电子邮件,如果用户也将其用于 MFA,则允许用户通过电话重置密码。


目标

我想将其设置为Email only,如下图红色矩形所示:

aws cognito 用户池设置

有谁知道我需要使用什么 Terraform 参数来实现这一点?资源中记录的选项aws_cognito_user_pool似乎都没有映射到这一点。

4

4 回答 4

5

1 年过去了,由于aws_cognito_user_pool资源的新引入设置account_recovery_setting ,我现在可以回答我自己的问题。

例如,要将帐户恢复首选项设置为仅电子邮件,我们可以执行以下操作:

resource "aws_cognito_user_pool" "mypool" {
  name = "mypool"

  account_recovery_setting {
    recovery_mechanism {
      name     = "verified_email"
      priority = 1
    }
  }
}

这在 AWS 提供商的v3.19.0之后可用,作为此合并 PR的一部分。

于 2020-12-02T07:52:14.807 回答
4

您好Peter,我正在使用 CloudFormation 模板来创建 Cognito Configuartion。

稍作修改并转换为 YAML。我们可以将恢复设置设置为仅电子邮件选项。请找到以下代码片段。

UserPool:
    Type: "AWS::Cognito::UserPool"
    Properties:
      UserPoolName: "test-pool"
      UsernameAttributes: [email]
      AccountRecoverySetting:
        RecoveryMechanisms:
          - Name: "verified_email"
            Priority: 1
      AutoVerifiedAttributes:
        - email

这似乎对我有用:)

注意:在尝试合并“admin_only”的其他选项时,AWS 会生成错误帐户恢复设置参数无效。帐户恢复设置不能将 admin_only 设置与任何其他恢复机制一起使用。

于 2020-04-15T16:29:15.967 回答
2

Terraform 还不支持它。但是您可以改用本地 exec:

resource "null_resource" "setup_account_recovery_settings" {
  triggers = {
    version = "${var.version_local_exec_account_recovery_settings}"
  }

  provisioner "local-exec" {
    command = "aws cognito-idp update-user-pool --user-pool-id ${aws_cognito_user_pool.userpool.id} --account-recovery-setting 'RecoveryMechanisms=[{Priority=1,Name=verified_email},{Priority=2,Name=verified_phone_number}]' --region ${var.region}"
  }
}

但它会抹去你的整个配置。相反,您可以将完整配置作为 json 提供,但为什么要使用 terraform 而不是

于 2019-12-09T21:55:44.207 回答
0

按照大卫的想法,如果你想启用“仅电子邮件”选项,你应该设置

--account-recovery-setting 'RecoveryMechanisms=[{Priority=1,Name=verified_email}]'

问候,

于 2020-02-19T11:03:18.273 回答