Exportation des données d'entraînement d'un ensemble de données vers Amazon S3 - Amazon Personalize

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exportation des données d'entraînement d'un ensemble de données vers Amazon S3

Après avoir importé vos données dans un ensemble de données Amazon Personalize, vous pouvez les exporter vers un compartiment Amazon S3. Vous pouvez exporter des données pour vérifier et inspecter les données utilisées par Amazon Personalize pour générer des recommandations, consulter les événements d'interaction avec les articles que vous avez précédemment enregistrés en temps réel ou effectuer une analyse hors ligne de vos données.

Vous pouvez choisir d'exporter uniquement les données que vous avez importées en masse (importées à l'aide d'une tâche d'importation de jeux de données Amazon Personalize), uniquement les données que vous avez importées individuellement (enregistrements importés à l'aide de la console ou PutItems des opérations PutEventsPutUsers, ou), ou les deux.

Note

Vous ne pouvez pas exporter de données dans un jeu de données d'interactions Action ou dans un jeu de données d'actions.

Pour les enregistrements qui correspondent exactement à tous les champs, Amazon Personalize n'exporte qu'un seul enregistrement. Si deux enregistrements ont le même identifiant mais qu'un ou plusieurs champs sont différents, Amazon Personalize inclut ou supprime les enregistrements en fonction des données que vous choisissez d'exporter :

  • Si vous exportez des données en masse et incrémentielles, Amazon Personalize exporte uniquement les éléments les plus récents avec le même identifiant (dans les exportations de jeux de données d'articles), et uniquement les utilisateurs ayant le même identifiant (dans les exportations de jeux de données utilisateurs). Pour les ensembles de données sur les interactions entre articles, Amazon Personalize exporte toutes les données relatives aux interactions entre articles.

  • Si vous exportez uniquement des données incrémentielles, Amazon Personalize exporte toutes les données relatives aux articles, aux utilisateurs ou aux interactions entre articles que vous avez importées individuellement, y compris les articles ou les utilisateurs associés à ces données. IDs Seuls les enregistrements correspondant exactement à tous les champs sont exclus.

  • Si vous exportez uniquement des données en masse, Amazon Personalize inclut toutes les données relatives aux articles, aux utilisateurs ou aux interactions entre articles que vous avez importées en masse, y compris les articles ou les utilisateurs associés à ces donnéesIDs. Seuls les enregistrements correspondant exactement à tous les champs sont exclus.

Pour exporter un ensemble de données, vous devez créer une tâche d'exportation de jeu de données. Une tâche d'exportation d'ensembles de données est un outil d'exportation d'enregistrements qui génère les enregistrements d'un ensemble de données vers un ou plusieurs CSV fichiers d'un compartiment Amazon S3. Le CSV fichier de sortie inclut une ligne d'en-tête dont les noms de colonnes correspondent aux champs du schéma du jeu de données.

Exigences relatives aux autorisations relatives aux tâches d'exportation de jeux

Pour exporter un ensemble de données, Amazon Personalize doit être autorisé à ajouter des fichiers à votre compartiment Amazon S3. Pour accorder des autorisations, associez une nouvelle AWS Identity and Access Management (IAM) politique à votre rôle de service Amazon Personalize qui accorde au rôle l'autorisation d'utiliser les ListBucket actions PutObject et sur votre compartiment, et attachez une politique de compartiment à votre compartiment Amazon S3 de sortie qui accorde au principal Amazon Personalize l'autorisation d'utiliser les ListBucket actions PutObject et.

Si vous utilisez AWS Key Management Service (AWS KMS) pour le chiffrement, vous devez autoriser Amazon Personalize et votre rôle de IAM service Amazon Personalize à utiliser votre clé. Pour de plus amples informations, veuillez consulter Autoriser Amazon Personalize à utiliser votre AWS KMS clé.

Politique de rôle de service pour l'exportation d'un ensemble de données

L'exemple de politique suivant accorde à votre rôle de service Amazon Personalize l'autorisation d'utiliser les ListBucket actions PutObject et. amzn-s3-demo-bucketRemplacez-le par le nom de votre bucket de sortie. Pour plus d'informations sur l'attachement de politiques à un rôle de IAM service, consultezAssocier une politique Amazon S3 à votre rôle de service Amazon Personalize.

{ "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/*" ] } ] }

Politique relative aux compartiments Amazon S3 pour l'exportation d'un ensemble de données

L'exemple de politique suivant accorde à Amazon Personalize l'autorisation d'utiliser ListBucket les actions PutObject et sur un compartiment Amazon S3. Remplacez amzn-s3-demo-bucket par le nom de votre compartiment. Pour plus d'informations sur l'ajout d'une politique de compartiment Amazon S3 à un compartiment, consultez Ajouter une politique de compartiment à l'aide de la console Amazon S3 dans le guide de l'utilisateur d'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/*" ] } ] }

Création d'une tâche d'exportation de jeux de données

Vous pouvez créer une tâche d'exportation de jeux de données à l'aide de la console Amazon Personalize, AWS Command Line Interface (AWS CLI) ou AWS SDKs.

Après avoir importé vos données dans un ensemble de données et créé un compartiment Amazon S3 en sortie, vous pouvez exporter les données vers le compartiment à des fins d'analyse. Pour exporter un ensemble de données à l'aide de la console Amazon Personalize, vous devez créer une tâche d'exportation de jeu de données. Pour plus d'informations sur la création d'un compartiment Amazon S3, consultez la section Création d'un compartiment dans le guide de l'utilisateur d'Amazon Simple Storage Service.

Avant d'exporter un ensemble de données, assurez-vous que votre rôle de service Amazon Personalize peut accéder à votre compartiment Amazon S3 de sortie et y écrire. Consultez Exigences relatives aux autorisations relatives aux tâches d'exportation de jeux.

Pour créer une tâche d'exportation d'un ensemble de données (console)
  1. Ouvrez la console Amazon Personalize à la https://console.aws.amazon.com/personalize/maison.

  2. Dans le volet de navigation, sélectionnez Groupes de jeux de données.

  3. Sur la page Groupes de jeux de données, choisissez votre groupe de jeux de données.

  4. Dans le volet de navigation, sélectionnez Datasets.

  5. Choisissez l'ensemble de données que vous souhaitez exporter vers un compartiment Amazon S3.

  6. Dans Tâches d'exportation de jeux de données, choisissez Créer une tâche d'exportation de jeu de données.

  7. Dans Détails de la tâche d'exportation de l'ensemble de données, pour le nom de la tâche d'exportation de l'ensemble de données, entrez le nom de la tâche d'exportation.

  8. Pour le rôle IAM de service, choisissez le rôle de service Amazon Personalize que vous avez créé dansCréation d'un rôle IAM pour Amazon Personalize.

  9. Pour le chemin de sortie des données Amazon S3, entrez le compartiment Amazon S3 de destination. Utilisez la syntaxe suivante :

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

  10. Si vous utilisez AWS KMS pour le chiffrement, pour la KMSclé ARN, entrez le nom de ressource Amazon (ARN) pour la AWS KMS clé.

  11. Pour Exporter le type de données, choisissez le type de données à exporter en fonction de la façon dont vous avez initialement importé les données.

    • Choisissez Bulk pour exporter uniquement les données que vous avez importées en bloc à l'aide d'une tâche d'importation de jeux de données.

    • Choisissez Incremental pour exporter uniquement les données que vous avez importées individuellement à l'aide de la console ou PutItems des opérations PutEventsPutUsers, ou.

    • Choisissez Les deux pour exporter toutes les données de l'ensemble de données.

  12. Pour les balises, ajoutez éventuellement des balises. Pour plus d'informations sur le balisage des ressources Amazon Personalize, consultezMarquer les ressources Amazon Personalize.

  13. Choisissez Créer une tâche d'exportation de jeux de données.

    Sur la page d'aperçu de l'ensemble de données, dans Tâches d'exportation de l'ensemble de données, la tâche est répertoriée avec un statut de tâche d'exportation. La tâche d'exportation de l'ensemble de données est terminée lorsque le statut est atteint ACTIVE. Vous pouvez ensuite télécharger les données depuis le compartiment Amazon S3 de sortie. Pour plus d'informations sur le téléchargement d'objets depuis un compartiment Amazon S3, consultez la section Téléchargement d'un objet dans le guide de l'utilisateur d'Amazon Simple Storage Service. .

Après avoir importé vos données dans le jeu de données et créé un compartiment Amazon S3 en sortie, vous pouvez exporter l'ensemble de données vers le compartiment à des fins d'analyse. Pour exporter un ensemble de données à l'aide de AWS CLI, créez une tâche d'exportation d'ensemble de données à l'aide de la create-dataset-export-job AWS CLI commande. Pour plus d'informations sur la création d'un compartiment Amazon S3, consultez la section Création d'un compartiment dans le guide de l'utilisateur d'Amazon Simple Storage Service.

Avant d'exporter un ensemble de données, assurez-vous que le rôle de service Amazon Personalize peut accéder à votre compartiment Amazon S3 de sortie et y écrire. Consultez Exigences relatives aux autorisations relatives aux tâches d'exportation de jeux.

Voici un exemple de la commande create-dataset-export-job AWS CLI . Donnez un nom à la tâche, remplacez-le dataset arn par le nom de ressource Amazon (ARN) de l'ensemble de données que vous souhaitez exporter et remplacez-le role ARN par le rôle ARN de service Amazon Personalize dans lequel vous l'avez crééCréation d'un rôle IAM pour Amazon Personalize. Danss3DataDestination, pour lekmsKeyArn, fournissez éventuellement le ARN code pour votre AWS KMS clé et pour le path chemin d'accès à votre compartiment Amazon S3 de sortie.

Pouringestion-mode, spécifiez les données à exporter à partir des options suivantes :

  • Spécifiez BULK de n'exporter que les données que vous avez importées en masse à l'aide d'une tâche d'importation de jeux de données.

  • Spécifiez PUT de n'exporter que les données que vous avez importées individuellement à l'aide de la console ou PutItems des opérations PutEvents PutUsers, ou.

  • Spécifiez ALL d'exporter toutes les données de l'ensemble de données.

Pour de plus amples informations, veuillez consulter CreateDatasetExportJob.

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

La tâche d'exportation de l'ensemble de données ARN s'affiche.

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

Utilisez cette DescribeDatasetExportJob opération pour vérifier l'état.

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

Après avoir importé vos données dans le jeu de données et créé un compartiment Amazon S3 en sortie, vous pouvez exporter l'ensemble de données vers le compartiment à des fins d'analyse. Pour exporter un ensemble de données à l'aide de AWS SDKs, créez une tâche d'exportation d'ensemble de données à l'aide de l'CreateDatasetExportJobopération. Pour plus d'informations sur la création d'un compartiment Amazon S3, consultez la section Création d'un compartiment dans le guide de l'utilisateur d'Amazon Simple Storage Service.

Le code suivant montre comment créer une tâche d'exportation de jeu de données à l'aide de la version 2.x SDK pour Python (Boto3) ou SDK pour Java. SDK

Avant d'exporter un ensemble de données, assurez-vous que le rôle de service Amazon Personalize peut accéder à votre compartiment Amazon S3 de sortie et y écrire. Consultez Exigences relatives aux autorisations relatives aux tâches d'exportation de jeux.

SDK for Python (Boto3)

Utilisez ce qui suit create_dataset_export_job pour exporter les données d'un ensemble de données vers un compartiment Amazon S3. Donnez un nom à la tâche, remplacez-le dataset arn par le nom de ressource Amazon (ARN) de l'ensemble de données que vous souhaitez exporter et remplacez-le role ARN par le rôle ARN de service Amazon Personalize dans lequel vous l'avez crééCréation d'un rôle IAM pour Amazon Personalize. Danss3DataDestination, pour lekmsKeyArn, fournissez éventuellement le ARN code pour votre AWS KMS clé et pour le path chemin d'accès à votre compartiment Amazon S3 de sortie.

PouringestionMode, spécifiez les données à exporter à partir des options suivantes :

  • Spécifiez BULK de n'exporter que les données que vous avez importées en masse à l'aide d'une tâche d'importation de jeux de données.

  • Spécifiez PUT de n'exporter que les données que vous avez importées individuellement à l'aide de la console ou PutItems des opérations PutEvents PutUsers, ou.

  • Spécifiez ALL d'exporter toutes les données de l'ensemble de données.

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

Utilisez la createDatasetExportJob méthode suivante pour créer une tâche d'exportation de jeu de données. Transmettez les paramètres suivants : a PersonalizeClient, le nom de votre tâche d'exportation, le jeu ARN de données que vous souhaitez exporter, le mode d'ingestion, le chemin du compartiment Amazon S3 en sortie et celui ARN de votre AWS KMS clé.

Il ingestionMode peut s'agir de l'une des options suivantes :

  • IngestionMode.BULKÀ utiliser pour exporter uniquement les données que vous avez importées en masse à l'aide d'une tâche d'importation de jeux de données.

  • IngestionMode.PUTÀ utiliser pour exporter uniquement les données que vous avez importées individuellement à l'aide de la console ou PutItems des opérations PutEvents PutUsers, ou.

  • Permet IngestionMode.ALL d'exporter toutes les données de l'ensemble de données.

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()); } }