Este módulo permite a Anjana Data sincronizar los usuarios de un User Pool de Amazon Cognito.
El proceso utiliza la API estándar de AWS (ListUsers) para descargar periódicamente el directorio completo de usuarios. Todos los atributos del usuario (estándar y personalizados) están disponibles para el mapeo de campos.
Parte 1: Configuración en AWS (IAM User)
Anjana necesita credenciales programáticas (Access Key / Secret Key) con permisos de lectura específicos para acceder al User Pool.
Paso 1: Crear Usuario IAM
-
Vaya a la consola de IAM (Identity and Access Management) en AWS.
-
Seleccione Usuarios > Crear usuario.
-
Asigne un nombre (ej.
anjana-cognito-sync). -
Complete la creación sin dar acceso a la consola.
-
Vaya a la pestaña Credenciales de seguridad > Claves de acceso > Crear clave de acceso.
-
Seleccione "Código local" o "Aplicación de terceros".
-
Importante: Copie y guarde la Clave de acceso (Access Key) y la Clave de acceso secreta (Secret Key).
Paso 2: Crear Política de Permisos (Policy)
Es recomendable restringir el acceso únicamente al User Pool que desea sincronizar.
-
En el usuario IAM, añada una Política en línea (Inline Policy) o cree una política gestionada.
-
Use el siguiente JSON, reemplazando el
Resourcecon el ARN de su User Pool (o use*para dar acceso a todos los pools de la cuenta):
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CognitoReadAccess",
"Effect": "Allow",
"Action": [
"cognito-idp:ListUsers",
"cognito-idp:AdminGetUser"
],
"Resource": "arn:aws:cognito-idp:eu-west-1:123456789012:userpool/eu-west-1_AbCdEfG"
}
]
}
Parte 2: Obtener Datos del User Pool
-
Vaya a la consola de Amazon Cognito.
-
Acceda al User Pool que desea conectar.
-
En la cabecera de la página de "Información general", copie el ID de grupo de usuarios (User Pool ID).
-
Ejemplo:
eu-west-1_XyZ123
-
-
Anote la Región donde está desplegado (ej.
eu-west-1).
Parte 3: Configuración en application.yml
Edite el archivo de configuración de Anjana e incluya los datos en la sección security.provisioning.providers.aws-cognito.
security:
provisioning:
providers:
aws-cognito:
# Clave única para identificar este origen de datos (ej: pool-clientes-externos)
pool-clientes:
# Región AWS del User Pool
region: "eu-west-1"
# ID del User Pool (obtenido en Parte 2)
user-pool-id: "eu-west-1_XyZ123456"
# Credenciales del Usuario IAM (creado en Parte 1)
access-key: "AKIAXXXXXXXXXXXXXXXX"
secret-key: "SECRET_KEY_XXXXXXXXXXXXXXXXXXXXXXXX"
Resumen de Propiedades
Utilice esta tabla para localizar rápidamente los valores necesarios en la consola de AWS.
|
Propiedad YAML |
Descripción |
Origen en AWS |
|---|---|---|
|
|
ID de la clave de acceso del usuario técnico. |
IAM > Usuarios > Credenciales de seguridad |
|
|
Secreto de la clave de acceso. |
IAM > Usuarios > Credenciales de seguridad (Solo visible al crear) |
|
|
Código de la región donde está el servicio. |
Consola AWS (Esquina superior derecha) |
|
|
Identificador único del directorio. |
Amazon Cognito > User Pools > Información general |
Mapeo de campos personalizado (field-mapping)
Anjana incluye un mapeo por defecto que cubre los casos habituales. Puede sobreescribir cualquier campo indicando la clave del atributo Cognito de la que debe leer el valor. Las claves son listas en orden de prioridad: se usa el primer valor no vacío.
Mapeo por defecto
|
Campo Anjana |
Claves por defecto (orden de prioridad) |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Campos disponibles
Anjana expone todos los atributos del usuario de Cognito (tanto estándar como personalizados), por lo que cualquier clave puede usarse en field-mapping.
|
Clave |
Descripción |
|---|---|
|
|
Identificador único e inmutable del usuario. |
|
|
Dirección de correo electrónico. |
|
|
|
|
|
Teléfono (formato E.164, ej. |
|
|
Nombre completo. |
|
|
Nombre de pila. |
|
|
Apellidos. |
|
|
Segundo nombre. |
|
|
Apodo. |
|
|
Nombre de usuario preferido (login). |
|
|
URL del perfil. |
|
|
Género. |
|
|
Fecha de nacimiento. |
|
|
Zona horaria (ej. |
|
|
Configuración regional (ej. |
|
|
Cualquier atributo personalizado del pool (ej. |
Ejemplo de configuración
security:
provisioning:
providers:
aws-cognito:
pool-clientes:
region: "eu-west-1"
user-pool-id: "eu-west-1_XyZ123456"
access-key: "..."
secret-key: "..."
field-mapping:
# Leer cargo del atributo personalizado 'custom:position'
title: ["custom:position", "custom:title"]
# Leer departamento del atributo 'custom:department'
# (no hay un campo Anjana para departamento, pero puede usarse como fallback en title)
phone: ["phone_number"]