Este Lambda function é responsável por configurar a resposta automática de confirmação de usuário durante o processo de pré-sign-up no pool de usuários do Cognito. Ele recebe um evento contendo informações sobre a solicitação de registro de usuário e define a confirmação automática do usuário como verdadeira, permitindo que o usuário seja registrado sem a necessidade de confirmação por e-mail ou SMS.
A função espera um evento no seguinte formato:
{
"version": "string",
"triggerSource": "string",
"region": "string",
"userPoolId": "string",
"userName": "string",
"callerContext": {
"awsSdkVersion": "string",
"clientId": "string"
},
"request": {
"userAttributes": {
"string": "string",
...
},
"validationData": {
"string": "string",
...
}
},
"response": {}
}
A função modifica o campo response para incluir a chave autoConfirmUser como True.
Este Lambda function deve ser associado ao trigger de pré-sign-up no pool de usuários do Cognito para que a configuração de confirmação automática seja aplicada.
Nenhuma dependência externa é necessária para esta função além das bibliotecas padrão do Python.
Para que o Lambda function possa ser executado, é necessário que a função tenha permissão para assumir um papel no AWS Identity and Access Management (IAM). A política de assunção de papel necessária pode ser definida no arquivo policy/lambda_assume_role_policy.json com o seguinte conteúdo:
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": "lambda.amazonaws.com"
}
}
]
}
Este Lambda function pode ser provisionado utilizando o Terraform. Um exemplo de configuração do Terraform é fornecido abaixo:
terraform {
backend "s3" {
bucket = "mikes-terraform-state"
key = "mikes-lambda-pre-sign-up.tfstate"
region = "us-east-2"
encrypt = true
}
}
provider "aws" {
region = var.region
}
resource "aws_iam_role" "mikes_lambda_pre_sign_up_role" {
name = "mikes_lambda_pre_sign_up_role"
assume_role_policy = file("policy/lambda_assume_role_policy.json")
}
resource "aws_lambda_function" "mikes_lambda_pre_sign_up" {
function_name = "mikes_lambda_pre_sign_up"
handler = "app/lambda_function.handler"
runtime = "python3.11"
role = aws_iam_role.mikes_lambda_pre_sign_up_role.arn
filename = "lambda_function.zip"
source_code_hash = filebase64sha256("lambda_function.zip")
depends_on = [
aws_iam_role.mikes_lambda_pre_sign_up_role
]
}
variable "region" {
type = string
default = "us-east-2"
}
Lembre-se de substituir os valores de bucket e key no bloco backend "s3" com o nome do seu bucket do S3 e o nome do arquivo de estado desejado, respectivamente. Também é importante ajustar o arquivo policy/lambda_assume_role_policy.json conforme necessário para atender aos requisitos de segurança da sua aplicação.