

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Importación de usuarios a un grupo de usuarios
<a name="cognito-user-pools-import-users"></a>

Existen dos formas de importar o migrar usuarios del directorio de usuarios o de la base de datos de usuarios a los grupos de usuarios Amazon Cognito. Puede migrar usuarios cuando inician sesión por primera vez mediante Amazon Cognito con un desencadenador de Lambda para la migración de usuarios. Con este método, los usuarios pueden seguir usando sus contraseñas y no es necesario restablecerlas tras la migración al grupo de usuarios. También puede migrar los usuarios de forma masiva cargando un archivo CSV que contiene los atributos del perfil de usuario de todos los usuarios. En las secciones siguientes se describen estos dos métodos.

**Más recursos**
+ [Approaches for migrating users to Amazon Cognito user pools](https://aws.amazon.com/blogs/security/approaches-for-migrating-users-to-amazon-cognito-user-pools/)
+ [AWS Re:inForce 2023 - Migración a Amazon Cognito](https://www.youtube.com/watch?v=OkDj9uXWwCc)

**Topics**
+ [Importación de usuarios con un desencadenador de Lambda para la migración de usuarios](cognito-user-pools-import-using-lambda.md)
+ [Importación de usuarios en grupos de usuarios desde un archivo CSV](cognito-user-pools-using-import-tool.md)

# Importación de usuarios con un desencadenador de Lambda para la migración de usuarios
<a name="cognito-user-pools-import-using-lambda"></a>

Con este enfoque, puede migrar sin problemas usuarios desde el directorio de usuarios existente a grupos de usuarios cuando un usuario inicia sesión con la aplicación o solicita un restablecimiento de la contraseña por primera vez. Agregue una función [Migración del desencadenador de Lambda del usuario](user-pool-lambda-migrate-user.md) a su grupo de usuarios, y este recibe metadatos sobre los usuarios que intentan iniciar sesión y devuelve información del perfil de usuario de un origen de identidad externo. Para obtener detalles y un ejemplo de código sobre este desencadenador de Lambda, incluidos los parámetros de solicitud y respuesta, consulte [Parámetros del desencadenador de Lambda para migrar usuarios](user-pool-lambda-migrate-user.md#cognito-user-pools-lambda-trigger-syntax-user-migration).

Antes de comenzar el proceso de migración de usuarios, cree una función de Lambda para migrar usuarios en su Cuenta de AWS y defina la función de Lambda como el desencadenador de migración del usuario en el grupo de usuarios. Agregue una política de autorización a su función de Lambda que permita acceder únicamente a la entidad principal de la cuenta del servicio de Amazon Cognito, `cognito-idp.amazonaws.com`, para invocar a la función de Lambda y solo en el contexto de su propio grupo de usuarios. Para obtener más información, consulte [Uso de políticas basadas en recursos para Lambda de AWS Lambda (políticas de funciones de Lambda)](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html). 

**Proceso de inicio de sesión**

1. El usuario abre la aplicación e inicia sesión con la API de grupos de usuarios de Amazon Cognito o el inicio de sesión administrado. Para obtener más información sobre cómo facilitar el inicio de sesión con Amazon APIs Cognito, consulte. [Integración de la autenticación y la autorización de Amazon Cognito con aplicaciones web y móviles](cognito-integrate-apps.md)

1. La aplicación envía el nombre de usuario y la contraseña a Amazon Cognito. Si su aplicación tiene una interfaz de inicio de sesión personalizada que creó con un AWS SDK, debe usar [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html)o [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html)con el `USER_PASSWORD_AUTH` flujo o. `ADMIN_USER_PASSWORD_AUTH` Cuando la aplicación utiliza uno de estos flujos, el SDK envía la contraseña al servidor.
**nota**  
Antes de agregar un desencadenador de migración de usuarios, active el flujo `USER_PASSWORD_AUTH` o `ADMIN_USER_PASSWORD_AUTH` en la configuración del cliente de la aplicación. Debe utilizar estos flujos en lugar del flujo predeterminado `USER_SRP_AUTH`. Amazon Cognito debe enviar una contraseña a la función de Lambda para que pueda verificar la autenticación de su usuario en el otro directorio. Un SRP oculta la contraseña de usuario de la función de Lambda.

1. Amazon Cognito comprueba si el nombre de usuario enviado coincide con un nombre de usuario o un alias del grupo de usuarios. Puede configurar la dirección de correo electrónico, el número de teléfono o el nombre de usuario preferido como alias en el grupo de usuarios. Si el usuario no existe, Amazon Cognito envía parámetros, incluidos el nombre de usuario y la contraseña, a la función [Migración del desencadenador de Lambda del usuario](user-pool-lambda-migrate-user.md).

1. La función [Migración del desencadenador de Lambda del usuario](user-pool-lambda-migrate-user.md) comprueba o autentica al usuario con el directorio o la base de datos de usuarios existente. La función devuelve los atributos de usuario que Amazon Cognito almacena en el perfil del usuario en el grupo de usuarios. Puede devolver un parámetro `username` solo si el nombre de usuario enviado coincide con un atributo de alias. Si desea que los usuarios puedan seguir usando las contraseñas existentes, la función establece el atributo `finalUserStatus` en `CONFIRMED` en la respuesta de Lambda. Su aplicación debe devolver todos los parámetros `"response"` mostrados en [Parámetros del desencadenador de Lambda para migrar usuarios](user-pool-lambda-migrate-user.md#cognito-user-pools-lambda-trigger-syntax-user-migration).
**importante**  
No registre todo el objeto de evento de solicitud en el código de Lambda de migración de usuarios. Este objeto de evento de solicitud incluye la contraseña del usuario. Si no desinfectas los registros, las contraseñas aparecen en los registros. CloudWatch 

1. Amazon Cognito crea el perfil de usuario en el grupo de usuarios y devuelve los tokens al cliente de aplicación.

1. La aplicación admite los tokens, acepta la autenticación de usuarios y procede con el contenido solicitado.

Después de migrar a los usuarios, utilice `USER_SRP_AUTH` para iniciar sesión. El protocolo Secure Remote Password (SRP) no envía la contraseña a través de la red y ofrece beneficios de seguridad con respecto al flujo `USER_PASSWORD_AUTH` utilizado durante la migración.

Si se producen errores durante la migración, incluidos problemas con el dispositivo del cliente o con la red, la aplicación recibe respuestas de error de la API de grupos de usuarios de Amazon Cognito. Cuando esto ocurre, es posible que Amazon Cognito cree o no la cuenta de usuario en el grupo de usuarios. El usuario debería intentar iniciar sesión de nuevo. Si el inicio de sesión falla repetidamente, intente restablecer la contraseña del usuario con el flujo de recuperación de contraseñas olvidadas de la aplicación. 

El flujo de recuperación de contraseñas olvidadas también invoca a la función [Migración del desencadenador de Lambda del usuario](user-pool-lambda-migrate-user.md) con un origen de eventos `UserMigration_ForgotPassword`. Dado que el usuario no envía una contraseña cuando solicita un restablecimiento de contraseña, Amazon Cognito no incluye ninguna contraseña en caso de que se envíe a la función de Lambda. La función solo puede buscar al usuario en el directorio de usuarios existente y devolver atributos para agregarlos al perfil de usuarios en el grupo de usuarios. Cuando la función completa la invocación y devuelve su respuesta a Amazon Cognito, el grupo de usuarios envía un código de restablecimiento de contraseña por correo electrónico o SMS. En su aplicación, solicite al usuario su código de confirmación y una nueva contraseña y, a continuación, envíe esa información a Amazon Cognito en una solicitud de [ConfirmForgotPassword](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_ConfirmForgotPassword.html)API. Puede también utilizar páginas integradas para el flujo de contraseña olvidada en el inicio de sesión administrado.

**Recursos adicionales**
+ [Approaches for migrating users to Amazon Cognito user pools](https://aws.amazon.com/blogs/security/approaches-for-migrating-users-to-amazon-cognito-user-pools/)

# Importación de usuarios en grupos de usuarios desde un archivo CSV
<a name="cognito-user-pools-using-import-tool"></a>

Si dispone de un almacén de identidades externo y tiene tiempo de preparar su grupo de usuarios para los nuevos usuarios locales, la importación masiva de usuarios desde un archivo de valores separados por comas (CSV) puede ser una opción económica y que requiere poco esfuerzo para migrar a un grupo de usuarios de Amazon Cognito. La importación de un archivo CSV es un proceso que consiste en descargar y rellenar un archivo de plantilla y, a continuación, ponerlo a disposición del grupo de usuarios en un trabajo de importación. Puede utilizar una importación de CSV para crear rápidamente usuarios de prueba. También puede rellenar el archivo mediante programación con solicitudes de API de lectura al almacén de identidades externo y, a continuación, analizar sus detalles y atributos para convertirlas en operaciones de escritura en el archivo.

El proceso de importación establece valores para todos los atributos de usuario excepto **password** (contraseña). No se admite la importación de contraseñas, ya que las prácticas recomendadas de seguridad requieren que las contraseñas no estén disponibles como texto sin formato, y no admitimos la importación de hash. Esto significa que sus usuarios deben cambiar de contraseña la primera vez que inicien sesión. Los usuarios se encuentran en estado `RESET_REQUIRED` cuando se importan con este método.

La forma más sencilla de importar usuarios desde un CSV es activar el [inicio de sesión sin contraseña](amazon-cognito-user-pools-authentication-flow-methods.md#amazon-cognito-user-pools-authentication-flow-methods-passwordless) en su grupo de usuarios. Con los atributos de dirección de correo electrónico y número de teléfono y la configuración correcta del grupo de usuarios, los usuarios pueden iniciar sesión con contraseñas de un solo uso por correo electrónico o SMS (OTPs) inmediatamente después de completar el trabajo de importación. Para obtener más información, consulte [Obligación de que los usuarios importados restablezcan sus contraseñas](#cognito-user-pools-using-import-tool-password-reset).

También puede establecer las contraseñas de sus usuarios con una solicitud a la API [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminSetUserPassword.html) que establezca el parámetro `Permanent` en `true`. La importación de archivos CSV no contribuye a los usuarios activos (MAUs) que se facturan mensualmente en tu grupo de usuarios. Sin embargo, sí se generan operaciones de restablecimiento de contraseñas. MAUs Para administrar los costos que supone importar un gran número de usuarios con contraseña que podrían no estar activos inmediatamente, configure la aplicación para que solicite a los usuarios que introduzcan una nueva contraseña cuando inicien sesión y reciban el desafío `RESET_REQUIRED`.

**nota**  
La fecha de creación de cada usuario es la hora en la que se importó a dicho usuario al grupo de usuarios. La fecha de creación no es uno de los atributos importados.

**Pasos para crear un trabajo de importación de usuarios**

1. Cree un rol de Amazon CloudWatch Logs en la consola AWS Identity and Access Management (IAM).

1. Cree el archivo .csv de importación de usuarios.

1. Cree y ejecute el trabajo de importación de usuarios.

1. Cargue el archivo .csv de importación de usuarios.

1. Inicie y ejecute el trabajo de importación de usuarios.

1. Se utiliza CloudWatch para comprobar el registro de eventos.

1. Pida a los usuarios importados que restablezcan sus contraseñas.

**Más recursos**
+ [Arquitectura de referencia de exportación de perfiles de usuario de Cognito](https://aws.amazon.com/solutions/implementations/cognito-user-profiles-export-reference-architecture/) para exportar cuentas de usuario entre grupos de usuarios

**Topics**
+ [Crear la función de IAM de CloudWatch registros](#cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role)
+ [Creación del archivo CSV de importación de usuarios](#cognito-user-pools-using-import-tool-csv-header)
+ [Creación y ejecución del trabajo de importación del grupo de usuarios de Amazon Cognito](#cognito-user-pools-creating-import-job)
+ [Ver los resultados de importación del grupo de usuarios en la CloudWatch consola](#cognito-user-pools-using-import-tool-cloudwatch)
+ [Obligación de que los usuarios importados restablezcan sus contraseñas](#cognito-user-pools-using-import-tool-password-reset)

## Crear la función de IAM de CloudWatch registros
<a name="cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role"></a>

Si utiliza la CLI o la API de Amazon Cognito, debe crear un rol de CloudWatch IAM. El siguiente procedimiento describe cómo crear un rol de IAM que Amazon Cognito pueda usar para escribir los resultados del trabajo CloudWatch de importación en Logs. 

**nota**  
Al crear un trabajo de importación en la consola de Amazon Cognito, puede crear el rol de IAM al mismo tiempo. Cuando elige **Create a new IAM role** (Crear un nuevo rol de IAM), Amazon Cognito aplica automáticamente la política de confianza y la política de IAM adecuadas al rol.

**Para crear la función de IAM de CloudWatch registros para la importación de grupos de usuarios (API)AWS CLI**

1. Inicie sesión en la consola de IAM Consola de administración de AWS y ábrala en. [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)

1. Cree un nuevo rol de IAM para un. Servicio de AWS Para obtener instrucciones detalladas, consulte [Creación de un rol para un Servicio de AWS](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html#roles-creatingrole-service-console) en la *Guía del usuario de AWS Identity and Access Management *.

   1. Al seleccionar **Use case** (Caso de uso) para **Trusted entity type** (Tipo de entidad de confianza), elija cualquier servicio. Amazon Cognito no aparece actualmente en la lista de casos de uso del servicio.

   1. En la pantalla **Add permissions** (Agregar permisos), elija **Create policy** (Crear política) e inserte la siguiente declaración de política. *REGION*Reemplácelo por el Región de AWS de su grupo de usuarios, por ejemplo`us-east-1`. *ACCOUNT*Sustitúyalo por tu Cuenta de AWS ID, por ejemplo`111122223333`.

------
#### [ JSON ]

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "logs:CreateLogGroup",
                      "logs:CreateLogStream",
                      "logs:DescribeLogStreams",
                      "logs:PutLogEvents"
                  ],
                  "Resource": [
                      "arn:aws:logs:us-east-1:111122223333:log-group:/aws/cognito/*"
                  ]
              }
          ]
      }
      ```

------

1. Como no ha elegido Amazon Cognito como entidad de confianza al crear el rol, ahora debe editar manualmente la relación de confianza del rol. Elija **Roles** en el panel de navegación de la consola de IAM y, a continuación, elija el nuevo rol que ha creado.

1. Seleccione la pestaña **Relaciones de confianza**.

1. Elija **Editar la política de confianza**.

1. Pegue la siguiente declaración de política en **Edit trust policy** (Editar política de confianza) y reemplace cualquier texto existente: 

------
#### [ JSON ]

****  

   ```
   {
           "Version":"2012-10-17",		 	 	 
           "Statement": [
               {
                   "Effect": "Allow",
                   "Principal": {
                       "Service": "cognito-idp.amazonaws.com"
                   },
                   "Action": "sts:AssumeRole"
               }
           ]
       }
   ```

------

1. Elija **Actualizar política**. 

1. Apunte el ARN del rol . Proporcionará el ARN cuando cree su trabajo de importación.

## Creación del archivo CSV de importación de usuarios
<a name="cognito-user-pools-using-import-tool-csv-header"></a>

Para poder importar los usuarios existentes a su grupo de usuarios, debe crear un archivo de valores separados por comas (CSV) que contenga los usuarios que desea importar y sus atributos. A partir de su grupo de usuarios, puede recuperar un archivo de importación de usuarios con encabezados que reflejen el esquema de atributos de su grupo de usuarios. A continuación, puede insertar la información de usuario que coincida con los requisitos de formato de [Formato del archivo CSV](#cognito-user-pools-using-import-tool-formatting-csv-file). 

### Descarga del encabezado del archivo CSV (consola)
<a name="cognito-user-pools-using-import-tool-downloading-csv-header-console"></a>

Siga este procedimiento para descargar el archivo de encabezado de CSV.

**Para descargar el encabezado de archivo CSV**

1. Vaya a la [consola de Amazon Cognito](https://console.aws.amazon.com/cognito/home). Es posible que se le pidan sus AWS credenciales.

1. Elija **User Pools** (Grupos de usuarios).

1. Elija en la lista un usuario existente.

1. Seleccione el menú **Usuarios**.

1. En la sección **Import users** (Importar usuarios), elija **Create an import job** (Crear un trabajo de importación).

1. En **Upload CSV** (Cargar CSV), seleccione el enlace *template.csv* y descargue el archivo CSV.

### Descarga del encabezado del archivo CSV (AWS CLI)
<a name="cognito-user-pools-using-import-tool-downloading-csv-header-using-cli"></a>

Para obtener una lista de los encabezados correctos, en el **menú Usuarios**, en **Importar usuarios**, seleccione **Crear trabajo de importación**. En el cuadro de diálogo siguiente, seleccione el enlace `template.csv` para descargar un archivo de plantilla con los atributos de su grupo de usuarios.

También puede ejecutar el siguiente comando CLI, donde *USER\$1POOL\$1ID* se encuentra el identificador del grupo de usuarios al que va a importar los usuarios:

```
aws cognito-idp get-csv-header --user-pool-id "USER_POOL_ID"
```

Respuesta de ejemplo:

```
{
    "CSVHeader": [
        "name",
        "given_name",
        "family_name",
        "middle_name",
        "nickname",
        "preferred_username",
        "profile",
        "picture",
        "website",
        "email",
        "email_verified",
        "gender",
        "birthdate",
        "zoneinfo",
        "locale",
        "phone_number",
        "phone_number_verified",
        "address",
        "updated_at",
        "cognito:mfa_enabled",
        "cognito:username"
    ],
    "UserPoolId": "USER_POOL_ID"
}
```

### Formato del archivo CSV
<a name="cognito-user-pools-using-import-tool-formatting-csv-file"></a>

 El archivo de encabezado CSV de importación de usuarios descargado es parecido a la siguiente cadena. También incluye cualquier atributo personalizado que haya agregado a su grupo de usuarios.

```
cognito:username,name,given_name,family_name,middle_name,nickname,preferred_username,profile,picture,website,email,email_verified,gender,birthdate,zoneinfo,locale,phone_number,phone_number_verified,address,updated_at,cognito:mfa_enabled
```

Edite el archivo CSV para que incluya este encabezado y los valores de atributo de sus usuarios y que tenga un formato que siga estas reglas:

**nota**  
Para obtener más información acerca de los valores de atributos, como el formato adecuado para números de teléfono, consulte [Uso de atributos de usuario](user-pool-settings-attributes.md).
+ La primera línea del archivo es la fila de encabezado descargada, que contiene los nombres de los atributos de usuario.
+ El orden de las columnas del archivo CSV no importa.
+ Cada línea tras la primera línea contiene los valores de atributo de un usuario.
+ Todas las columnas del encabezado tienen que estar presentes, pero no es necesario proporcionar valores para cada columna.
+ Los atributos siguientes son obligatorios:
  + **cognito:username**
  + **email\$1verified** o **phone\$1number\$1verified**
    + Al menos uno de los atributos verificados automáticamente debe ser `true` para cada usuario. Un atributo verificado automáticamente es una dirección de correo electrónico o un número de teléfono al que Amazon Cognito envía automáticamente un código cuando un nuevo usuario se une a su grupo de usuarios.
    + El grupo de usuarios debe tener al menos un atributo verificado automáticamente, ya sea **email\$1verified** o **phone\$1number\$1verified**. Si el grupo de usuarios no tiene atributos verificados automáticamente, el trabajo de importación no empezará.
    + Si el grupo de usuarios solo tiene un atributo verificado automáticamente, dicho atributo tiene que verificarse para cada usuario. Por ejemplo, si el grupo de usuarios solo tiene **phone\$1number** como un atributo verificado automáticamente, el valor **phone\$1number\$1verified** debe ser `true` para cada usuario.
**nota**  
Para que los usuarios restablezcan sus contraseñas, deben tener un correo electrónico o un número de teléfono verificado. Amazon Cognito envía un mensaje con el código de restablecimiento de contraseña al correo electrónico o al número de teléfono especificado en el archivo CSV. Si el mensaje se envía al número de teléfono, se envía mediante SMS. Para obtener más información, consulte [Verificación de la información de contacto durante el registro](signing-up-users-in-your-app.md#allowing-users-to-sign-up-and-confirm-themselves).
  + **email** (si **email\$1verified** es `true`)
  + **phone\$1number** (si **phone\$1number\$1verified** es `true`)
  + Todos los atributos que ha marcado como obligatorios al crear el grupo de usuarios
+ Los valores de atributo que son cadenas *no* deben estar entre comillas.
+ Si un valor de atributo contiene una coma, debe poner delante de la coma una barra oblicua inversa (\$1). Esto se debe a que los campos de un archivo CSV están separados por comas.
+ El contenido del archivo CSV debe estar en formato UTF-8 sin marca de orden de bytes.
+ El campo **cognito:username** es obligatorio y debe ser único dentro del grupo de usuarios. Puede ser cualquier cadena Unicode. Sin embargo, no puede contener espacios ni pestañas.
+ Los valores de la **fecha de nacimiento**, si están presentes, deben estar en ese formato **mm/dd/yyyy**. Esto significa, por ejemplo, que la fecha de nacimiento 1 de febrero de 1985 debe codificarse como **02/01/1985**.
+ El campo **cognito:mfa\$1enabled** debe ajustarse a los requisitos de la MFA de su grupo de usuarios. Si ha establecido que la autenticación multifactor (MFA) sea obligatoria en su grupo de usuarios, este campo debe ser `true`, o dejarse en blanco, para todos los usuarios. Si ha desactivado la MFA, este campo debe ser `false`, o dejarse en blanco, para todos los usuarios. Un valor en blanco establece el estado habilitado para la MFA de los usuarios importados en el estado requerido por el grupo de usuarios. Puede importar usuarios de un grupo de usuarios requerido por la MFA sin un factor de MFA válido, independientemente de si establece un valor `cognito:mfa_enabled`. Los usuarios de este estado tienen la MFA activa, pero no pueden iniciar sesión hasta que configuren un atributo de correo electrónico, un atributo de número de teléfono o un TOTP, y esa configuración sea un factor de MFA válido en su grupo de usuarios.
+ La longitud máxima de la fila es de 16 000 caracteres.
+ El tamaño de archivo CSV máximo es de 100 MB.
+ El número máximo de filas (usuarios) del archivo es de 500 000. Este máximo no incluye la fila de encabezado.
+ Se espera que el valor del campo **updated\$1at** (Actualizado a) esté en formato de tiempo Unix en segundos, por ejemplo: **1471453471**.
+ Los espacios en blanco del principio y del final de un valor de atributo se eliminan.

La siguiente lista es un ejemplo de archivo de importación CSV para un grupo de usuarios sin atributos personalizados. Su esquema de grupo de usuarios puede diferir de este ejemplo. En ese caso, deberá proporcionar valores de prueba en la plantilla CSV que descargue de su grupo de usuarios.

```
cognito:username,name,given_name,family_name,middle_name,nickname,preferred_username,profile,picture,website,email,email_verified,gender,birthdate,zoneinfo,locale,phone_number,phone_number_verified,address,updated_at,cognito:mfa_enabled
John,,John,Doe,,,,,,,johndoe@example.com,TRUE,,02/01/1985,,,+12345550100,TRUE,123 Any Street,,FALSE
Jane,,Jane,Roe,,,,,,,janeroe@example.com,TRUE,,01/01/1985,,,+12345550199,TRUE,100 Main Street,,FALSE
```

## Creación y ejecución del trabajo de importación del grupo de usuarios de Amazon Cognito
<a name="cognito-user-pools-creating-import-job"></a>

En esta sección se describe cómo crear y ejecutar el trabajo de importación del grupo de usuarios mediante la consola de Amazon Cognito y el AWS Command Line Interface ()AWS CLI.

**Topics**
+ [Importación de usuarios desde un archivo CSV (consola)](#cognito-user-pools-using-import-tool-console)
+ [Importación de usuarios (AWS CLI)](#cognito-user-pools-using-import-tool-cli)

### Importación de usuarios desde un archivo CSV (consola)
<a name="cognito-user-pools-using-import-tool-console"></a>

En el procedimiento siguiente se describe cómo importar a los usuarios desde el archivo CSV.

**Para importar usuarios desde el archivo CSV (consola)**

1. Vaya a la [consola de Amazon Cognito](https://console.aws.amazon.com/cognito/home). Es posible que se le pidan sus AWS credenciales.

1. Elija **User Pools** (Grupos de usuarios).

1. Elija en la lista un usuario existente.

1. Seleccione el menú **Usuarios**.

1. En la sección **Import users** (Importar usuarios), elija **Create an import job** (Crear un trabajo de importación).

1. En la página **Create import job** (Crear trabajo de importación), ingrese un valor en **Job name** (Nombre de trabajo).

1. Elija **Create a new IAM role** (Crear un nuevo rol de IAM) o **Use an existing IAM role** (Usar un rol de IAM existente).

   1. Si eligió **Create a new IAM role** (Crear un nuevo rol de IAM), ingrese un nombre para su nuevo rol. Amazon Cognito creará automáticamente un rol con los permisos y la relación de confianza correctos. La entidad principal de IAM que crea el trabajo de importación debe tener permisos para crear roles de IAM.

   1. Si eligió **Use an existing IAM role** (Utilizar un rol de IAM existente), elija un rol de la lista debajo de **IAM role selection** (Selección de rol de IAM). Este rol debe tener los permisos y la política de confianza que se describen en [Crear la función de IAM de CloudWatch registros](#cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role).

1. En **Cargar CSV**, seleccione **Elegir archivo** y adjunte el archivo CSV que ha preparado.

1. Elija **Create job** (Crear trabajo) para enviar su trabajo, pero inícielo más tarde. Elija **Create and start job** (Crear e iniciar trabajo) para enviar su trabajo e iniciarlo inmediatamente.

1. Si ha creado el trabajo pero no lo ha iniciado, puede iniciarlo más adelante. En el menú **Usuarios**, en **Importar usuarios**, elija su trabajo de importación y, a continuación, seleccione **Iniciar**. También puedes enviar una solicitud de [StartUserImportJob](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_StartUserImportJob.html)API desde un AWS SDK.

1. Supervise el progreso de su trabajo de importación de usuarios en la pestaña **Usuarios**, en **Importar usuarios**. Si su trabajo no se realiza correctamente, puede seleccionar el valor **Status** (Estado). Para obtener más información, selecciona **Ver los CloudWatch registros para obtener más información** y consulta cualquier problema en la consola de CloudWatch registros.

### Importación de usuarios (AWS CLI)
<a name="cognito-user-pools-using-import-tool-cli"></a>

Dispone de los comandos de la CLI siguientes para importar usuarios a un grupo de usuarios:
+ `create-user-import-job`
+ `get-csv-header`
+ `describe-user-import-job`
+ `list-user-import-jobs`
+ `start-user-import-job`
+ `stop-user-import-job`

Para obtener la lista de opciones de línea de comandos de estos comandos, utilice la opción de línea de comandos `help`. Por ejemplo:

```
aws cognito-idp get-csv-header help
```

#### Creación de un trabajo de importación de usuarios
<a name="cognito-user-pools-using-import-tool-cli-creating-user-import-job"></a>

Después de crear el archivo CSV, cree un trabajo de importación de usuarios ejecutando el siguiente comando CLI, donde *JOB\$1NAME* es el nombre que va a elegir para el trabajo, *USER\$1POOL\$1ID* es el ID del grupo de usuarios del grupo de usuarios al que se agregarán los nuevos usuarios y *ROLE\$1ARN* es el ARN de rol que recibió: [Crear la función de IAM de CloudWatch registros](#cognito-user-pools-using-import-tool-cli-cloudwatch-iam-role) 

```
aws cognito-idp create-user-import-job --job-name "JOB_NAME" --user-pool-id "USER_POOL_ID" --cloud-watch-logs-role-arn "ROLE_ARN"
```

El *PRE\$1SIGNED\$1URL* valor devuelto en la respuesta es válido durante 15 minutos. Transcurrido ese tiempo, la URL caducará y será preciso crear otra tarea de importación de usuarios para obtener una URL nueva.

**Example respuesta:**  

```
{
    "UserImportJob": {
        "Status": "Created",
        "SkippedUsers": 0,
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "JobName": "JOB_NAME",
        "JobId": "JOB_ID",
        "PreSignedUrl": "PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn": "ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957431.965
    }
}
```

#### Valores de estado para un trabajo de importación de usuarios
<a name="cognito-user-pools-using-import-tool-cli-status-values-for-user-import-job"></a>

En las respuestas a los comandos de importación de usuarios, verá uno de los valores `Status` siguientes:
+ `Created`: Se ha creado el trabajo, pero no se ha iniciado.
+ `Pending`: Un estado de transición. El trabajo se ha iniciado, pero todavía no se ha empezado a importar los usuarios.
+ `InProgress`: El trabajo se ha iniciado y se están importando usuarios.
+ `Stopping`: Ha detenido el trabajo, pero el trabajo aún no ha dejado de importar usuarios.
+ `Stopped`: Ha detenido el trabajo y este ha dejado de importar usuarios.
+ `Succeeded`: El trabajo se ha completado correctamente.
+ `Failed`: El trabajo se ha detenido debido a un error.
+ `Expired`: Ha creado un trabajo, pero no la ha iniciado en un plazo de 24-48 horas. Todos los datos asociados al trabajo se han eliminado y el trabajo no puede iniciarse.

#### Carga del archivo CSV
<a name="cognito-user-pools-using-import-tool-cli-uploading-csv-file"></a>

Utilice el comando `curl` siguiente para cargar el archivo CSV que contiene los datos de usuario en la URL prefirmada que ha obtenido de la respuesta del comando `create-user-import-job`.

```
curl -v -T "PATH_TO_CSV_FILE" -H "x-amz-server-side-encryption:aws:kms" "PRE_SIGNED_URL"
```

En la salida de este comando, busque la frase `"We are completely uploaded and fine"`. Esta frase indica que el archivo se ha cargado correctamente. Sus grupos de usuarios no conservan la información de los archivos de importación después de ejecutar los trabajos de importación. Cuando se completen o caduquen, Amazon Cognito eliminará el archivo CSV cargado.

#### Descripción de un trabajo de importación de usuarios
<a name="cognito-user-pools-using-import-tool-cli-describing-user-import-job"></a>

Para obtener una descripción del trabajo de importación de usuarios, utilice el siguiente comando, donde *USER\$1POOL\$1ID* está el ID del grupo de usuarios y *JOB\$1ID* el ID del trabajo que se devolvió al crear el trabajo de importación de usuarios. 

```
aws cognito-idp describe-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
```

**Example Respuesta de ejemplo:**  

```
{
    "UserImportJob": {
        "Status": "Created",
        "SkippedUsers": 0,
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "JobName": "JOB_NAME",
        "JobId": "JOB_ID",
        "PreSignedUrl": "PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn":"ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957431.965
    }
}
```

En el resultado del ejemplo anterior, *PRE\$1SIGNED\$1URL* es la URL en la que cargó el archivo CSV. *ROLE\$1ARN*Es el ARN del rol de CloudWatch registros que recibió al crear el rol.

#### Visualización de la lista de trabajos de importación de usuarios
<a name="cognito-user-pools-using-import-tool-cli-listing-user-import-jobs"></a>

Para visualizar una lista de las tareas de importación de usuarios, ejecute el comando siguiente:

```
aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 2
```

**Example Respuesta de ejemplo:**  

```
{
    "UserImportJobs": [
        {
            "Status": "Created",
            "SkippedUsers": 0,
            "UserPoolId": "USER_POOL_ID",
            "ImportedUsers": 0,
            "JobName": "JOB_NAME",
            "JobId": "JOB_ID",
            "PreSignedUrl":"PRE_SIGNED_URL",
            "CloudWatchLogsRoleArn":"ROLE_ARN",
            "FailedUsers": 0,
            "CreationDate": 1470957431.965
        },
        {
            "CompletionDate": 1470954227.701,
            "StartDate": 1470954226.086,
            "Status": "Failed",
            "UserPoolId": "USER_POOL_ID",
            "ImportedUsers": 0,
            "SkippedUsers": 0,
            "JobName": "JOB_NAME",
            "CompletionMessage": "Too many users have failed or been skipped during the import.",
            "JobId": "JOB_ID",
            "PreSignedUrl":"PRE_SIGNED_URL",
            "CloudWatchLogsRoleArn":"ROLE_ARN",
            "FailedUsers": 5,
            "CreationDate": 1470953929.313
        }
    ],
    "PaginationToken": "PAGINATION_TOKEN"
}
```

Las tareas se enumeran en orden cronológico desde la última tarea creada hasta la primera. La *PAGINATION\$1TOKEN* cadena que sigue al segundo trabajo indica que hay resultados adicionales para este comando de lista. Para publicar la lista de resultados adicionales, utilice la opción `--pagination-token` de la siguiente manera:

```
aws cognito-idp list-user-import-jobs --user-pool-id "USER_POOL_ID" --max-results 10 --pagination-token "PAGINATION_TOKEN"
```

#### Inicio de un trabajo de importación de usuarios
<a name="cognito-user-pools-using-import-tool-cli-starting-user-import-job"></a>

Para iniciar una tarea de importación de usuarios, ejecute el comando siguiente:

```
aws cognito-idp start-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
```

Solo puede haber un trabajo de importación activo a la vez por cuenta.

**Example Respuesta de ejemplo:**  

```
{
    "UserImportJob": {
        "Status": "Pending",
        "StartDate": 1470957851.483,
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "SkippedUsers": 0,
        "JobName": "JOB_NAME",
        "JobId": "JOB_ID",
        "PreSignedUrl":"PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn": "ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957431.965
    }
}
```

#### Detención de un trabajo de importación de usuarios
<a name="cognito-user-pools-using-import-tool-cli-stopping-user-import-job"></a>

Para detener una tarea de importación de usuarios mientras está en curso, ejecute el comando siguiente. Después de detener el trabajo, esta no se puede reiniciar.

```
aws cognito-idp stop-user-import-job --user-pool-id "USER_POOL_ID" --job-id "JOB_ID"
```

**Example Respuesta de ejemplo:**  

```
{
    "UserImportJob": {
        "CompletionDate": 1470958050.571,
        "StartDate": 1470958047.797,
        "Status": "Stopped",
        "UserPoolId": "USER_POOL_ID",
        "ImportedUsers": 0,
        "SkippedUsers": 0,
        "JobName": "JOB_NAME",
        "CompletionMessage": "The Import Job was stopped by the developer.",
        "JobId": "JOB_ID",
        "PreSignedUrl":"PRE_SIGNED_URL",
        "CloudWatchLogsRoleArn": "ROLE_ARN",
        "FailedUsers": 0,
        "CreationDate": 1470957972.387
    }
}
```

## Ver los resultados de importación del grupo de usuarios en la CloudWatch consola
<a name="cognito-user-pools-using-import-tool-cloudwatch"></a>

Puedes ver los resultados de tu trabajo de importación en la CloudWatch consola de Amazon.

**Topics**
+ [Visualización de los resultados](#cognito-user-pools-using-import-tool-viewing-the-results)
+ [Interpretación de los resultados](#cognito-user-pools-using-import-tool-interpreting-the-results)

### Visualización de los resultados
<a name="cognito-user-pools-using-import-tool-viewing-the-results"></a>

En los pasos siguientes se describe cómo ver los resultados de la importación del grupo de usuarios.

**Para ver los resultados de la importación del grupo de usuarios**

1. Inicia sesión en Consola de administración de AWS y abre la CloudWatch consola en [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/).

1. Seleccione **Logs** (Registros).

1. Elija el grupo de log de las tareas de importación del grupo de usuarios. El nombre del grupo de log tiene el formato `/aws/cognito/userpools/USER_POOL_ID/USER_POOL_NAME`.

1. Elija el log de el trabajo de importación de usuarios que acaba de ejecutar. El nombre del registro tiene el formato*JOB\$1ID*/*JOB\$1NAME*. Los resultados del log remiten a los usuarios por número de línea. No se escriben datos de usuarios en el log. Por cada usuario, se muestra una línea similar a la siguiente:
   + `[SUCCEEDED] Line Number 5956 - The import succeeded.`
   + `[SKIPPED] Line Number 5956 - The user already exists.`
   + `[FAILED] Line Number 5956 - The User Record does not set any of the auto verified attributes to true. (Example: email_verified to true).`

### Interpretación de los resultados
<a name="cognito-user-pools-using-import-tool-interpreting-the-results"></a>

Los usuarios importados correctamente tienen el estado establecido en "PasswordReset».

En los casos siguientes, el usuario no se importa, pero el trabajo de importación continuará:
+ Ningún atributo verificado automáticamente se establece en `true`.
+ Los datos de usuario no coinciden con el esquema.
+ El usuario no se ha podido importar debido a un error interno.

En los casos siguientes, el trabajo de importación fallará:
+ El rol de Amazon CloudWatch Logs no se puede asumir, no tiene la política de acceso correcta o se ha eliminado.
+ El grupo de usuarios se ha eliminado.
+ Amazon Cognito no puede analizar el archivo .csv.

## Obligación de que los usuarios importados restablezcan sus contraseñas
<a name="cognito-user-pools-using-import-tool-password-reset"></a>

Si su grupo de usuarios solo ofrece el inicio de sesión basado en contraseñas, los usuarios deberán restablecer sus contraseñas después de importarlas. La primera vez que inicien sesión, podrán introducir *cualquier* contraseña. Amazon Cognito les pide que introduzcan una nueva contraseña en la respuesta de la API a la solicitud de inicio de sesión de su aplicación.

Si su grupo de usuarios tiene factores de autenticación sin contraseña, Amazon Cognito utiliza de forma predeterminada los de los usuarios importados. No se les pide una contraseña nueva y pueden iniciar sesión inmediatamente con una OTP por correo o SMS sin contraseña establecida. También puede pedir a los usuarios que establezcan una contraseña para que puedan completar otros métodos de inicio de sesión, como la combinación de nombre de usuario y contraseña o el uso de una clave de acceso. Tras la importación del usuario, se aplican las siguientes condiciones al inicio de sesión sin contraseña.

1. Debe importar los usuarios con un atributo que corresponda a un factor de inicio de sesión sin contraseña disponible. Si los usuarios pueden iniciar sesión con una dirección de correo electrónico, debe importar un atributo `email`. Si es un número de teléfono, debe importar un atributo `phone_number`. Si son ambas cosas, importe un valor para cualquiera de los atributos.

1. Normalmente, los usuarios importan en un estado `RESET_REQUIRED` en el que deben restablecer su contraseña. Si se importan con la posibilidad de iniciar sesión sin contraseña, Amazon Cognito establece su estado en `CONFIRMED`.

Para obtener más información sobre la autenticación sin contraseña, lo que incluye cómo configurarla y cómo crear el flujo de autenticación en su aplicación, consulte [Autenticación con grupos de usuarios de Amazon Cognito](authentication.md).

El siguiente procedimiento describe la experiencia del usuario en un mecanismo de inicio de sesión personalizado con usuarios locales en un `RESET_REQUIRED` después de importar un archivo CSV. Si sus usuarios inician sesión con un inicio de sesión administrado, pídales que seleccionen la opción **¿Ha olvidado su contraseña?**, que miren el código en su correo electrónico o mensaje de texto y que establezcan una contraseña.

**Obligación de que los usuarios importados restablezcan sus contraseñas**

1. En la aplicación, intente iniciar sesión de forma silenciosa para el usuario actual con `InitiateAuth` mediante una contraseña aleatoria.

1. Amazon Cognito devuelve `NotAuthorizedException` cuando está habilitado `PreventUserExistenceErrors`. De lo contrario, devuelve `PasswordResetRequiredException`.

1. Su aplicación realiza una solicitud de API `ForgotPassword` y restablece la contraseña del usuario.

   1. La aplicación envía el nombre de usuario en una solicitud de API `ForgotPassword`.

   1. Amazon Cognito envía un código al correo electrónico o número de teléfono verificados. El destino depende de los valores que haya proporcionado para `email_verified` y `phone_number_verified` en su archivo CSV. La respuesta a la solicitud `ForgotPassword` indica el destino del código.
**nota**  
Su grupo de usuarios debe estar configurado para verificar correos electrónicos o números de teléfono. Para obtener más información, consulte [Inscripción y confirmación de cuentas de usuario](signing-up-users-in-your-app.md).

   1. Su aplicación muestra un mensaje a su usuario para que compruebe la ubicación a la que se envió el código y le pide que ingrese el código y una nueva contraseña.

   1. El usuario introduce el código y una nueva contraseña en la aplicación.

   1. La aplicación envía el código y la nueva contraseña en una solicitud de API `ConfirmForgotPassword`.

   1. La aplicación redirige al usuario para que inicie sesión.