

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.

# Exportación de los datos de entrenamiento de un conjunto de datos a Amazon S3
<a name="export-data"></a>

Tras importar los datos a un conjunto de datos de Amazon Personalize, puede exportar los datos a un bucket de Amazon S3. Puede exportar datos para verificar e inspeccionar los datos que Amazon Personalize utiliza para generar recomendaciones, ver los eventos de interacción de elementos que registró anteriormente en tiempo real o realizar análisis de sus datos sin conexión a Internet. 

Puede elegir exportar solo los datos que haya importado de manera masiva (importados mediante un trabajo de importación de conjuntos de datos de Amazon Personalize), solo los datos que haya importado individualmente (registros importados mediante la consola o las operaciones `PutEvents`, `PutUsers` o `PutItems`), o ambos. 

**nota**  
 No se pueden exportar datos en un conjunto de datos de interacciones de acción ni en un conjunto de datos de acciones. 

Para los registros que coinciden exactamente *con todos los campos*, Amazon Personalize exporta solo un registro. Si dos registros tienen el mismo ID pero uno o más campos son diferentes, Amazon Personalize incluye o elimina los registros en función de los datos que decida exportar: 
+ Si exporta datos tanto masivos como incrementales, Amazon Personalize solo exporta los elementos más recientes con el mismo ID (en las exportaciones de conjuntos de datos de elementos) y solo los usuarios con el mismo ID (en las exportaciones de conjuntos de datos de usuarios). Para los conjuntos de datos de interacciones de elementos, Amazon Personalize exporta todos los datos de interacciones de elementos.
+ Si solo exporta datos incrementales, Amazon Personalize exporta todos los datos de elementos, usuarios o interacciones de elementos que haya importado individualmente, incluidos los elementos o usuarios con los mismos ID. Solo se excluyen los registros que coincidan exactamente para todos los campos.
+ Si solo exporta datos masivos, Amazon Personalize incluye todos los datos de elementos, usuarios o interacciones de elementos que haya importado de manera masiva, incluidos los elementos o usuarios con los mismos ID. Solo se excluyen los registros que coincidan exactamente para todos los campos.

Para exportar un conjunto de datos, cree un trabajo de exportación de conjunto de datos. Un *trabajo de exportación de conjuntos de datos* es una herramienta de exportación de registros que envía los registros de un conjunto de datos a uno o más archivos CSV de un bucket de Amazon S3. El archivo CSV de salida incluye una fila de encabezado con nombres de columnas que coinciden con los campos del esquema del conjunto de datos. 

**Topics**
+ [Requisitos de permisos para trabajos de exportación de conjuntos de datos](export-permissions.md)
+ [Creación de un trabajo de exportación de conjuntos de datos en Amazon Personalize](create-dataset-export-job.md)

# Requisitos de permisos para trabajos de exportación de conjuntos de datos
<a name="export-permissions"></a>

Para exportar un conjunto de datos, Amazon Personalize necesita permiso para añadir archivos al bucket de Amazon S3. Para conceder permisos, asocie una nueva AWS Identity and Access Management (política de IAM) a su rol de servicio de Amazon Personalize que concede el permiso de rol para usar las acciones `PutObject` y `ListBucket` de su bucket, y asocie una política de bucket a su bucket de Amazon S3 de salida que conceda el permiso de principio de Amazon Personalize para usar las acciones `PutObject` y `ListBucket`.

 Si usa AWS Key Management Service (AWS KMS) para cifrado, debe conceder permiso a Amazon Personalize y a su rol de servicio de IAM de Amazon Personalize para usar su clave. Para obtener más información, consulte [Otorgar permiso a Amazon Personalize para usar tu AWS KMS clave](granting-personalize-key-access.md).

## Política de roles de servicio para exportar un conjunto de datos
<a name="role-policy-for-dataset-export-job"></a>

El siguiente ejemplo de política concede a su rol de servicio de Amazon Personalize permiso para usar las acciones `PutObject` y `ListBucket`. Sustituya `amzn-s3-demo-bucket` por el nombre del bucket de salida. Para obtener información acerca de la asociación de políticas a un rol de servicio de IAM, consulte [Asociación de una política de Amazon S3 a su rol de servicio de Amazon Personalize](granting-personalize-s3-access.md#attaching-s3-policy-to-role). 

```
{
    "Version": "2012-10-17",		 	 	 
    "Id": "PersonalizeS3BucketAccessPolicy",
    "Statement": [
        {
            "Sid": "PersonalizeS3BucketAccessPolicy",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        }
    ]
}
```

## Política de buckets de Amazon S3 para exportar un conjunto de datos
<a name="bucket-policy-for-dataset-export-job"></a>

El siguiente ejemplo de política concede permiso a Amazon Personalize para usar las acciones `PutObject` y `ListBucket` en un bucket de Amazon S3. Reemplace `amzn-s3-demo-bucket` con el nombre de su bucket. Para obtener más información sobre cómo agregar una política de bucket de Amazon S3, consulte [Agregar una política de bucket mediante la consola de Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) en la *Guía del usuario de Amazon Simple Storage Service*. 

```
{
    "Version": "2012-10-17",		 	 	 
    "Id": "PersonalizeS3BucketAccessPolicy",
    "Statement": [
        {
            "Sid": "PersonalizeS3BucketAccessPolicy",
            "Effect": "Allow",
            "Principal": {
                "Service": "personalize.amazonaws.com"
            },
            "Action": [
                "s3:PutObject",
                "s3:ListBucket"
            ],
            "Resource": [
                "arn:aws:s3:::amzn-s3-demo-bucket",
                "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ]
        }
    ]
}
```

# Creación de un trabajo de exportación de conjuntos de datos en Amazon Personalize
<a name="create-dataset-export-job"></a>

Puede crear un trabajo de exportación de conjuntos de datos con la consola de Amazon Personalize, AWS Command Line Interface (AWS CLI) o los SDK de AWS. 

## Creación de un trabajo de exportación de conjunto de datos (consola)
<a name="export-data-console"></a>

Tras importar sus datos en un conjunto de datos y crear un bucket de Amazon S3 de salida, puede exportar los datos en el bucket para su análisis. **Para exportar un conjunto de datos mediante la consola Amazon Personalize, debe crear un trabajo de exportación de conjuntos de datos. Para obtener información sobre la creación de un bucket de Amazon S3, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la *Guía del usuario de Amazon Simple Storage Service*.

Antes de exportar un conjunto de datos, asegúrese de que su rol de servicio de Amazon Personalize pueda acceder y escribir en su bucket de Amazon S3 de salida. Consulte [Requisitos de permisos para trabajos de exportación de conjuntos de datos](export-permissions.md). 

**Para crear un trabajo de exportación de conjunto de datos (consola)**

1. Abra la consola Amazon Personalize en [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home).

1. En el panel de navegación, elija **Grupos de conjuntos de datos**.

1. En la página **Grupos de conjuntos de datos**, elija su grupo de conjuntos de datos.

1. Elija **Conjuntos de datos** en el panel de navegación.

1. Elija el conjunto de datos que desea exportar en un bucket de Amazon S3.

1.  En **Trabajos de exportación de conjuntos** de datos, elija **Crear trabajo de exportación de conjuntos de datos**. 

1. En **Detalles del trabajo de exportación de conjuntos de datos**, para **Nombre del trabajo de exportación de conjuntos de datos**, especifique un nombre para el trabajo de exportación.

1. Para el **Rol de servicio de IAM**, elija el rol de servicio de Amazon Personalize que creó en [Creación de un rol de IAM para Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions).

1. Para la **Ruta de salida de datos de Amazon S3**, especifique el bucket de Amazon S3 de destino. Utilice la siguiente sintaxis:

   **s3://amzn-s3-demo-bucket/<folder path>**

1. Si utiliza AWS KMS para cifrado, para **ARN de clave de KMS**, especifique el nombre de recurso de Amazon (ARN) para la clave AWS KMS. 

1. En el **Tipo de datos de exportación**, elija el tipo de datos que desee exportar en función de cómo los importó originalmente.
   +  Seleccione **Masivo** para exportar solo los datos que haya importado de forma masiva mediante un trabajo de importación de conjuntos de datos. 
   + Elija **Incremental** para exportar solo los datos que haya importado individualmente mediante la consola o las operaciones `PutEvents`, `PutUsers` o `PutItems`. 
   + Elija **Ambos** para exportar todos los datos del conjunto de datos. 

1. Para **Etiquetas**, si lo desea, añada cualquier etiqueta. Para obtener más información acerca del etiquetado de recursos de Amazon Personalize, consulte [Etiquetado de recursos de Amazon Personalize](tagging-resources.md).

1. Seleccione **Crear trabajo de exportación de conjuntos de datos**. 

   En la página **Información general del conjunto de datos**, en **Trabajos de exportación de conjuntos de datos**, el trabajo aparece con un **Estado de trabajo de exportación**. El trabajo de exportación del conjunto de datos se completa cuando el estado cambia a **ACTIVE**. A continuación, puede descargar los datos desde el bucket de Amazon S3 de salida. Para obtener información sobre cómo descargar objeto de un bucket de Amazon S3, consulte [Descarga de un objeto](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html) en la *Guía del usuario de Amazon Simple Storage Service*.

## Creación de un trabajo de exportación de conjunto de datos (AWS CLI)
<a name="export-data-cli"></a>

Tras importar los datos en el conjunto de datos y crear un bucket de Amazon S3 de salida, puede exportar el conjunto de datos al bucket para su análisis. Para exportar un conjunto de datos mediante el AWS CLI, cree un trabajo de exportación de conjuntos de datos mediante el comando `create-dataset-export-job` AWS CLI. Para obtener información sobre la creación de un bucket de Amazon S3, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la *Guía del usuario de Amazon Simple Storage Service*. 

Antes de exportar un conjunto de datos, asegúrese de que el rol de servicio de Amazon Personalize pueda acceder y escribir en su bucket de Amazon S3 de salida. Consulte [Requisitos de permisos para trabajos de exportación de conjuntos de datos](export-permissions.md). 

 A continuación, se muestra un ejemplo del comando `create-dataset-export-job` AWS CLI. Asigne un nombre al trabajo, sustituya `dataset arn` por el Nombre de recurso de Amazon (ARN) del conjunto de datos que desea exportar y sustituya `role ARN` por el ARN del rol de servicio de Amazon Personalize que creó en [Creación de un rol de IAM para Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions). En `s3DataDestination`, para el `kmsKeyArn`, si lo desea, proporcione el ARN para su clave AWS KMS y, para `path` proporcione la ruta al bucket de Amazon S3 de salida. 

 Para `ingestion-mode`, especifique los datos que se exportarán de las siguientes opciones: 
+  Especifique `BULK` para exportar solo los datos que haya importado de forma masiva mediante un trabajo de importación de conjuntos de datos. 
+  Especifique `PUT` para exportar solo los datos que haya importado de manera individual mediante la consola o las operaciones `PutEvents`, PutUsers o `PutItems`. 
+  Especifique `ALL` para exportar todos los datos del conjunto de datos. 

 Para obtener más información, consulte [CreateDatasetExportJob](API_CreateDatasetExportJob.md). 

```
aws personalize create-dataset-export-job \
  --job-name job name \
  --dataset-arn dataset ARN \
  --job-output "{\"s3DataDestination\":{\"kmsKeyArn\":\"kms key ARN\",\"path\":\"s3://amzn-s3-demo-bucket/folder-name/\"}}" \
  --role-arn role ARN \
  --ingestion-mode PUT
```

Se muestra el ARN del trabajo de exportación del conjunto de datos.

```
{
  "datasetExportJobArn": "arn:aws:personalize:us-west-2:acct-id:dataset-export-job/DatasetExportJobName"
}
```

Utilice la operación `DescribeDatasetExportJob` para comprobar el estado.

```
aws personalize describe-dataset-export-job \
  --dataset-export-job-arn dataset export job ARN
```

## Creación de un trabajo de exportación de conjuntos de datos (SDK de AWS)
<a name="export-data-sdk"></a>

 Tras importar los datos en el conjunto de datos y crear un bucket de Amazon S3 de salida, puede exportar el conjunto de datos al bucket para su análisis. Para exportar un conjunto de datos mediante los SDK de AWS, cree un trabajo de exportación de conjuntos de datos mediante la operación [CreateDatasetExportJob](API_CreateDatasetExportJob.md). Para obtener información sobre la creación de un bucket de Amazon S3, consulte [Creación de un bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) en la *Guía del usuario de Amazon Simple Storage Service*. 

En el siguiente código, se muestra cómo crear un trabajo de exportación de conjunto de datos con el SDK para Python (Boto3) o el SDK para Java 2.x.

Antes de exportar un conjunto de datos, asegúrese de que el rol de servicio de Amazon Personalize pueda acceder y escribir en su bucket de Amazon S3 de salida. Consulte [Requisitos de permisos para trabajos de exportación de conjuntos de datos](export-permissions.md). 

------
#### [ SDK for Python (Boto3) ]

Utilice el siguiente `create_dataset_export_job` para exportar los datos de un conjunto de datos en un bucket de Amazon S3. Asigne un nombre al trabajo, sustituya `dataset arn` por el nombre de recurso de Amazon (ARN) del conjunto de datos que desea exportar y sustituya `role ARN` por el ARN del rol de servicio de Amazon Personalize que creó en [Creación de un rol de IAM para Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions). En `s3DataDestination`, para el `kmsKeyArn`, si lo desea, proporcione el ARN para su clave AWS KMS y, para `path` proporcione la ruta al bucket de Amazon S3 de salida. 

 Para `ingestionMode`, especifique los datos que se exportarán de las siguientes opciones: 
+ Especifique `BULK` para exportar solo los datos que haya importado de forma masiva mediante un trabajo de importación de conjuntos de datos. 
+ Especifique `PUT` para exportar solo los datos que haya importado de manera individual mediante la consola o las operaciones `PutEvents`, PutUsers o `PutItems`. 
+ Especifique `ALL` para exportar todos los datos del conjunto de datos.

```
import boto3

personalize = boto3.client('personalize')

response = personalize.create_dataset_export_job(
    jobName = 'job name',
    datasetArn = 'dataset ARN',
    jobOutput = {
      "s3DataDestination": {
        "kmsKeyArn": "kms key ARN",
        "path": "s3://amzn-s3-demo-bucket/folder-name/"
      }
    },
    roleArn = 'role ARN',
    ingestionMode = 'PUT'
)

dsej_arn = response['datasetExportJobArn']

print ('Dataset Export Job arn: ' + dsej_arn)

description = personalize.describe_dataset_export_job(
    datasetExportJobArn = dsej_arn)['datasetExportJob']

print('Name: ' + description['jobName'])
print('ARN: ' + description['datasetExportJobArn'])
print('Status: ' + description['status'])
```

------
#### [ SDK for Java 2.x ]

Utilice el siguiente método `createDatasetExportJob` para crear un trabajo de exportación de conjunto de datos. Pase lo siguiente como parámetros: un PersonalizeClient, el nombre de su trabajo de exportación, el ARN del conjunto de datos que desea exportar, el modo de ingesta, la ruta del bucket de Amazon S3 de salida y el ARN para su clave AWS KMS.

 El `ingestionMode` puede ser una de las siguientes opciones: 
+ Use `IngestionMode.BULK` para exportar solo los datos que haya importado de forma masiva mediante un trabajo de importación de conjuntos de datos. 
+ Use `IngestionMode.PUT` para exportar solo los datos que haya importado de forma individual mediante la consola o las operaciones `PutEvents`, PutUsers o `PutItems`. 
+ Utilice `IngestionMode.ALL` para exportar todos los datos del conjunto de datos.

```
public static void createDatasetExportJob(PersonalizeClient personalizeClient, 
                                        String jobName,
                                        String datasetArn, 
                                        IngestionMode ingestionMode, 
                                        String roleArn,
                                        String s3BucketPath,
                                        String kmsKeyArn) {

    long waitInMilliseconds = 30 * 1000; // 30 seconds
    String status = null;

    try {
        S3DataConfig exportS3DataConfig = S3DataConfig.builder()
            .path(s3BucketPath)
            .kmsKeyArn(kmsKeyArn)
            .build();
            
        DatasetExportJobOutput jobOutput = DatasetExportJobOutput.builder()
            .s3DataDestination(exportS3DataConfig)
            .build();

        CreateDatasetExportJobRequest createRequest = CreateDatasetExportJobRequest.builder()
            .jobName(jobName)
            .datasetArn(datasetArn)
            .ingestionMode(ingestionMode)
            .jobOutput(jobOutput)
            .roleArn(roleArn)
            .build();

        String datasetExportJobArn = personalizeClient.createDatasetExportJob(createRequest).datasetExportJobArn();

        DescribeDatasetExportJobRequest describeDatasetExportJobRequest = DescribeDatasetExportJobRequest.builder()
            .datasetExportJobArn(datasetExportJobArn)
            .build();

        long maxTime = Instant.now().getEpochSecond() + 3 * 60 * 60;

        while (Instant.now().getEpochSecond() < maxTime) {

            DatasetExportJob datasetExportJob = personalizeClient.describeDatasetExportJob(describeDatasetExportJobRequest)
                .datasetExportJob();

            status = datasetExportJob.status();
            System.out.println("Export job status: " + status);

            if (status.equals("ACTIVE") || status.equals("CREATE FAILED")) {
                break;
            }
            try {
                Thread.sleep(waitInMilliseconds);
            } catch (InterruptedException e) {
                System.out.println(e.getMessage());
            }
        }
    } catch (PersonalizeException e) {
        System.out.println(e.awsErrorDetails().errorMessage());
    }
}
```

------