

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
<a name="export-data"></a>

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 `PutEvents``PutUsers`, 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ées IDs. 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 fichiers CSV d'un compartiment Amazon S3. Le fichier CSV 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. 

**Topics**
+ [Exigences relatives aux autorisations d'exportation de jeux de données](export-permissions.md)
+ [Création d'une tâche d'exportation de jeux de données dans Amazon Personalize](create-dataset-export-job.md)

# Exigences relatives aux autorisations d'exportation de jeux de données
<a name="export-permissions"></a>

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 politique Gestion des identités et des accès AWS (IAM) à 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 à Amazon Personalize l'autorisation principale 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 service Amazon Personalize IAM à utiliser votre clé. Pour de plus amples informations, veuillez consulter [Autoriser Amazon Personalize à utiliser votre AWS KMS clé](granting-personalize-key-access.md).

## Politique de rôle de service pour l'exportation d'un ensemble de données
<a name="role-policy-for-dataset-export-job"></a>

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-bucket`Remplacez-le par le nom de votre bucket de sortie. Pour plus d'informations sur l'attachement de politiques à un rôle de service IAM, consultez[Associer une politique Amazon S3 à votre rôle de service 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/*"
            ]
        }
    ]
}
```

## Politique relative aux compartiments Amazon S3 pour l'exportation d'un ensemble de données
<a name="bucket-policy-for-dataset-export-job"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/add-bucket-policy.html) 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 dans Amazon Personalize
<a name="create-dataset-export-job"></a>

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. 

## Création d'une tâche d'exportation de jeux de données (console)
<a name="export-data-console"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) 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 d'exportation de jeux de données](export-permissions.md). 

**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](https://console.aws.amazon.com/personalize/home).

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

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

1. Dans le volet de navigation, sélectionnez **Datasets.**

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

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

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

1. Pour le rôle de **service IAM, choisissez le rôle** de service Amazon Personalize que vous avez créé dans[Création d'un rôle IAM pour Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions).

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

1. Si vous utilisez AWS KMS pour le chiffrement, pour l'**ARN de la clé KMS**, entrez le nom de ressource Amazon (ARN) de la AWS KMS clé. 

1. 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 `PutEvents``PutUsers`, ou. 
   + Choisissez **Les deux** pour exporter toutes les données de l'ensemble de données. 

1. Pour les **balises**, ajoutez éventuellement des balises. Pour plus d'informations sur le balisage des ressources Amazon Personalize, consultez[Marquer les ressources Amazon Personalize](tagging-resources.md).

1. 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 du jeu de données est terminée lorsque le statut est **ACTIF**. 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html) dans le *guide de l'utilisateur d'Amazon Simple Storage Service.* .

## Création d'une tâche d'exportation de jeux de données (AWS CLI)
<a name="export-data-cli"></a>

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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) 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 d'exportation de jeux de données](export-permissions.md). 

 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 l'ARN du rôle de service Amazon Personalize dans lequel vous l'avez créé[Création d'un rôle IAM pour Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions). Dans`s3DataDestination`, pour le`kmsKeyArn`, indiquez éventuellement l'ARN de votre AWS KMS clé, et pour le, `path` fournissez le chemin d'accès à votre compartiment Amazon S3 de sortie. 

 Pour`ingestion-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](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
```

L'ARN de la tâche d'exportation du jeu de données 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
```

## Création d'une tâche d'exportation de jeux de données (AWS SDKs)
<a name="export-data-sdk"></a>

 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'[CreateDatasetExportJob](API_CreateDatasetExportJob.md)opération. Pour plus d'informations sur la création d'un compartiment Amazon S3, consultez la section [Création d'un compartiment](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) 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 du SDK pour Python (Boto3) ou du SDK SDK pour Java 2.x.

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 d'exportation de jeux de données](export-permissions.md). 

------
#### [ 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 l'ARN du rôle de service Amazon Personalize dans lequel vous l'avez créé[Création d'un rôle IAM pour Amazon Personalize](set-up-required-permissions.md#set-up-create-role-with-permissions). Dans`s3DataDestination`, pour le`kmsKeyArn`, indiquez éventuellement l'ARN de votre AWS KMS clé, et pour le, `path` fournissez le chemin d'accès à votre compartiment Amazon S3 de sortie. 

 Pour`ingestionMode`, 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, l'ARN du jeu de données que vous souhaitez exporter, le mode d'ingestion, le chemin du compartiment Amazon S3 de sortie et l'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());
    }
}
```

------