Exportación de los datos de entrenamiento de un conjunto de datos a Amazon S3 - Amazon Personalize

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

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.

Requisitos de permisos para trabajos de exportación de conjuntos de datos

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 utilizas AWS Key Management Service (AWS KMS) para el cifrado, debes conceder permiso a Amazon Personalize y a tu rol de servicio Amazon Personalize IAM para usar tu clave. Para obtener más información, consulte Concesión de permiso a Amazon Personalize para que utilice la clave AWS KMS.

Política de roles de servicio para exportar un conjunto de datos

El siguiente ejemplo de política concede a su rol de servicio de Amazon Personalize permiso para usar las acciones PutObject y ListBucket. Sustituya bucket-name 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.

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

Política de buckets de Amazon S3 para exportar un conjunto de datos

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 bucket-name con el nombre de su bucket. Para obtener información sobre cómo añadir una política de bucket de Amazon S3 a un bucket, consulte Añadir una política de bucket mediante la consola de Amazon S3 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:::bucket-name", "arn:aws:s3:::bucket-name/*" ] } ] }

Crear un trabajo de exportación de conjuntos de datos

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

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 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.

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.

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

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

  4. Elija Conjuntos de datos en el panel de navegación.

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

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

  7. 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.

  8. 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.

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

    s3://<name of your S3 bucket>/<folder path>

  10. Si lo utiliza AWS KMS para el cifrado, para el ARN de la clave de KMS, introduzca el nombre de recurso de Amazon (ARN) de la clave. AWS KMS

  11. 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.

  12. 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.

  13. 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 en la Guía del usuario de Amazon Simple Storage Service.

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 create-dataset-export-job AWS CLI comando. Para obtener información sobre la creación de un bucket de Amazon S3, consulte Creación de un bucket 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.

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. Ens3DataDestination, para elkmsKeyArn, si lo desea, proporcione el ARN de su AWS KMS clave y, para el, 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 que solo se exporten los datos que haya importado individualmente mediante la consola o las PutItems operaciones PutEvents PutUsers, o.

  • Especifique ALL para exportar todos los datos del conjunto de datos.

Para más información, consulte CreateDatasetExportJob.

aws personalize create-dataset-export-job \ --job-name job name \ --dataset-arn dataset ARN \ --job-output "{\"s3DataDestination\":{\"kmsKeyArn\":\"kms key ARN\",\"path\":\"s3://bucket-name/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

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 AWS SDK, cree un trabajo de exportación de conjuntos de datos mediante la CreateDatasetExportJob operación. Para obtener información sobre la creación de un bucket de Amazon S3, consulte Creación de un bucket 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.

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. Ens3DataDestination, para elkmsKeyArn, si lo desea, proporcione el ARN de su AWS KMS clave y, para el, 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 que solo se exporten los datos que haya importado individualmente mediante la consola o las PutItems operaciones PutEvents PutUsers, o.

  • 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://bucket-name/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 los siguientes parámetros como parámetros: a PersonalizeClient, el nombre del trabajo de exportación, el ARN del conjunto de datos que desea exportar, el modo de ingesta, la ruta del bucket Amazon S3 de salida y el ARN de la 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.

  • IngestionMode.PUTUtilícelo para exportar únicamente 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()); } }