Настройка параметров восстановления учетной записи для пула пользователей AWS Cognito с помощью Terraform

В духе инфраструктуры как кода я настроил пул пользователей AWS Cognito через Terraform с помощью полезных aws_cognito_user_pool ресурс.

Однако я не могу найти сопоставление аргументов / конфигурации для предпочтения восстановления учетной записи в разделе MFA и проверки.

Без уточнения, похоже, это мой выбор по умолчанию:

(Не рекомендуется) Телефон, если таковой имеется, в противном случае - по электронной почте и разрешите пользователю сбрасывать свой пароль по телефону, если он также использует его для MFA.


Цель

Я бы хотел установить это на Email only вместо этого, как аннотировано красным прямоугольником на изображении ниже:

Кто-нибудь знает, какой аргумент Terraform мне нужно использовать для достижения этого, пожалуйста? Ни один из вариантов, описанных вaws_cognito_user_pool ресурс, похоже, соответствует этому.

3 ответа

1 год, теперь я могу ответить на мой собственный вопрос, в связи с вновь введенной настройки, account_recovery_setting, из aws_cognito_user_pool ресурса.

Например, чтобы настроить восстановление учетной записи только на электронную почту, мы можем сделать следующее:

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

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

Это доступно, начиная с версии v3.19.0 поставщика AWS, как часть этого объединенного PR.

Привет, Peter J Langley, я использую шаблон 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 с любыми другими механизмами восстановления.

Terraform его пока не поддерживает. Но вместо этого вы можете использовать local 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, но зачем использовать терраформ, чем

Следуя идее Дэвида, если вы хотите включить опцию "только электронная почта", вы должны установить

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

С Уважением,