Esportazione dei dati di addestramento in un set di dati su Amazon S3 - Amazon Personalize

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esportazione dei dati di addestramento in un set di dati su Amazon S3

Dopo aver importato i dati in un set di dati Amazon Personalize, puoi esportare i dati in un bucket Amazon S3. Puoi esportare i dati per verificare e ispezionare i dati che Amazon Personalize utilizza per generare consigli, visualizzare gli eventi di interazione tra gli articoli che hai registrato in precedenza in tempo reale o eseguire analisi offline sui tuoi dati.

Puoi scegliere di esportare solo i dati che hai importato in blocco (importati utilizzando un processo di importazione del set di dati di Amazon Personalize), solo i dati che hai importato singolarmente (record importati utilizzando la console o PutEvents le operazioniPutUsers, PutItems o) o entrambi.

Nota

Non puoi esportare i dati in un set di dati di interazioni Action o in un set di dati Actions.

Per i record che corrispondono esattamente a tutti i campi, Amazon Personalize esporta solo un record. Se due record hanno lo stesso ID ma uno o più campi sono diversi, Amazon Personalize include o rimuove i record a seconda dei dati che scegli di esportare:

  • Se esporti dati sia in blocco che incrementali, Amazon Personalize esporta solo gli articoli più recenti con lo stesso ID (nelle esportazioni del set di dati Items) e solo gli utenti con lo stesso ID (nelle esportazioni del set di dati Users). Per i set di dati sulle interazioni tra articoli, Amazon Personalize esporta tutti i dati sulle interazioni degli articoli.

  • Se esporti solo dati incrementali, Amazon Personalize esporta tutti i dati di interazione su articoli, utenti o articoli che hai importato singolarmente, inclusi articoli o utenti con gli stessi ID. Sono esclusi solo i record che corrispondono esattamente a tutti i campi.

  • Se esporti solo dati in blocco, Amazon Personalize include tutti i dati relativi agli articoli, agli utenti o alle interazioni tra articoli che hai importato in blocco, inclusi gli articoli o gli utenti con gli stessi ID. Sono esclusi solo i record che corrispondono esattamente a tutti i campi.

Per esportare un set di dati, si crea un processo di esportazione del set di dati. Un processo di esportazione di set di dati è uno strumento di esportazione dei record che invia i record di un set di dati in uno o più file CSV in un bucket Amazon S3. Il file CSV di output include una riga di intestazione con nomi di colonna che corrispondono ai campi dello schema del set di dati.

Requisiti per le autorizzazioni dei lavori di esportazione del set di dati

Per esportare un set di dati, Amazon Personalize necessita dell'autorizzazione per aggiungere file al tuo bucket Amazon S3. Per concedere le autorizzazioni, allega una nuova policy AWS Identity and Access Management (IAM) al tuo ruolo di servizio Amazon Personalize che conceda al ruolo l'autorizzazione a utilizzare PutObject and Actions sul tuo bucket ListBucket e allega una policy bucket al tuo bucket Amazon S3 di output che conceda al principio di Amazon Personalize l'autorizzazione all'uso di and Actions. PutObject ListBucket

Se utilizzi AWS Key Management Service (AWS KMS) per la crittografia, devi concedere ad Amazon Personalize e al tuo ruolo di servizio Amazon Personalize IAM l'autorizzazione a usare la tua chiave. Per ulteriori informazioni, consulta Autorizzazione ad Amazon Personalize per l'uso della tua chiave AWS KMS.

Politica del ruolo di servizio per l'esportazione di un set di dati

La seguente politica di esempio concede al tuo ruolo di servizio Amazon Personalize l'autorizzazione a utilizzare PutObject and Actions. ListBucket bucket-nameSostituiscilo con il nome del tuo bucket di output. Per informazioni su come allegare le policy a un ruolo di servizio IAM, consulta. Allegare una policy Amazon S3 al tuo ruolo di servizio 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/*" ] } ] }

Policy sui bucket di Amazon S3 per l'esportazione di un set di dati

La seguente policy di esempio concede ad Amazon Personalize l'autorizzazione a utilizzare PutObject ListBucket and Actions su un bucket Amazon S3. Sostituisci bucket-name con il nome del tuo bucket. Per informazioni sull'aggiunta di una policy di Amazon S3 a un bucket, consulta Aggiungere una policy di bucket utilizzando la console Amazon S3 nella Guida per l'utente di 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/*" ] } ] }

Creazione di un processo di esportazione di set di dati

Puoi creare un processo di esportazione di set di dati con la console Amazon Personalize AWS Command Line Interface ,AWS CLI() o gli SDK. AWS

Dopo aver importato i dati in un set di dati e creato un bucket Amazon S3 di output, puoi esportare i dati nel bucket per l'analisi. Per esportare un set di dati utilizzando la console Amazon Personalize, crei un processo di esportazione del set di dati. Per informazioni sulla creazione di un bucket Amazon S3, consulta Creating a bucket nella Amazon Simple Storage Service User Guide.

Prima di esportare un set di dati, assicurati che il ruolo del servizio Amazon Personalize possa accedere e scrivere sul bucket Amazon S3 di output. Per informazioni, consulta Requisiti per le autorizzazioni dei lavori di esportazione del set di dati.

Per creare un processo di esportazione del set di dati (console)
  1. Apri la console Amazon Personalize all'indirizzo https://console.aws.amazon.com/personalize/home.

  2. Nel riquadro di navigazione, scegli Gruppi di set di dati.

  3. Nella pagina Gruppi di set di dati, scegli il tuo gruppo di set di dati.

  4. Nel riquadro di navigazione, scegli Datasets.

  5. Scegli il set di dati che desideri esportare in un bucket Amazon S3.

  6. In Processi di esportazione di set di dati, scegli Crea processo di esportazione del set di dati.

  7. In Dettagli del lavoro di esportazione del set di dati, per Nome del lavoro di esportazione del set di dati, inserisci un nome per il lavoro di esportazione.

  8. Per il ruolo di servizio IAM, scegli il ruolo di servizio Amazon Personalize in cui hai creato. Creazione di un ruolo IAM per Amazon Personalize

  9. Per il percorso di output dei dati di Amazon S3, inserisci il bucket Amazon S3 di destinazione. Utilizzare la seguente sintassi:

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

  10. Se utilizzi AWS KMS per la crittografia, per la chiave KMS ARN, inserisci l'Amazon Resource Name (ARN) per la chiave. AWS KMS

  11. Per Esporta tipo di dati, scegli il tipo di dati da esportare in base a come hai originariamente importato i dati.

    • Scegli Bulk per esportare solo i dati che hai importato in blocco utilizzando un processo di importazione del set di dati.

    • Scegli Incrementale per esportare solo i dati che hai importato singolarmente utilizzando la console o le operazioniPutEvents, PutUsers o. PutItems

    • Scegli Entrambi per esportare tutti i dati nel set di dati.

  12. Per i tag, aggiungi facoltativamente qualsiasi tag. Per ulteriori informazioni sull'etichettatura delle risorse Amazon Personalize, consulta. Etichettare le risorse di Amazon Personalize

  13. Scegli Crea un processo di esportazione del set di dati.

    Nella pagina di panoramica del set di dati, in Lavori di esportazione del set di dati, il lavoro è elencato con lo stato del processo di esportazione. Il processo di esportazione del set di dati è completo quando lo stato è ATTIVO. È quindi possibile scaricare i dati dal bucket Amazon S3 di output. Per informazioni sul download di oggetti da un bucket Amazon S3, consulta Downloading an object nella Amazon Simple Storage Service User Guide. .

Dopo aver importato i dati nel set di dati e creato un bucket Amazon S3 di output, puoi esportare il set di dati nel bucket per l'analisi. Per esportare un set di dati utilizzando il AWS CLI, crea un processo di esportazione del set di dati utilizzando il comando. create-dataset-export-job AWS CLI Per informazioni sulla creazione di un bucket Amazon S3, consulta Creating a bucket nella Amazon Simple Storage Service User Guide.

Prima di esportare un set di dati, assicurati che il ruolo del servizio Amazon Personalize possa accedere e scrivere sul tuo bucket Amazon S3 di output. Per informazioni, consulta Requisiti per le autorizzazioni dei lavori di esportazione del set di dati.

Di seguito è riportato un comando create-dataset-export-job AWS CLI di esempio. Assegna un nome al lavoro, dataset arn sostituiscilo con l'Amazon Resource Name (ARN) del set di dati che desideri esportare e sostituiscilo con role ARN l'ARN del ruolo del servizio Amazon Personalize in cui hai creato. Creazione di un ruolo IAM per Amazon Personalize Inoltres3DataDestination, fornisci facoltativamente l'kmsKeyArnARN per la AWS KMS tua chiave e per il percorso path del bucket Amazon S3 di output.

Peringestion-mode, specifica i dati da esportare tra le seguenti opzioni:

  • Specificate BULK di esportare solo i dati importati in blocco utilizzando un processo di importazione del set di dati.

  • Specificate PUT di esportare solo i dati importati singolarmente utilizzando la console o le PutEvents operazioni PutUsers, oPutItems.

  • ALLSpecificare di esportare tutti i dati nel set di dati.

Per ulteriori informazioni, consulta 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

Viene visualizzato l'ARN del processo di esportazione del set di dati.

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

Utilizzare l'DescribeDatasetExportJoboperazione per verificare lo stato.

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

Dopo aver importato i dati nel set di dati e creato un bucket Amazon S3 di output, puoi esportare il set di dati nel bucket per l'analisi. Per esportare un set di dati utilizzando gli AWS SDK, crea un processo di esportazione del set di dati utilizzando l'operazione. CreateDatasetExportJob Per informazioni sulla creazione di un bucket Amazon S3, consulta Creating a bucket nella Amazon Simple Storage Service User Guide.

Il codice seguente mostra come creare un processo di esportazione di set di dati utilizzando l'SDK for Python (Boto3) o l'SDK for Java 2.x SDK.

Prima di esportare un set di dati, assicurati che il ruolo del servizio Amazon Personalize possa accedere e scrivere sul tuo bucket Amazon S3 di output. Per informazioni, consulta Requisiti per le autorizzazioni dei lavori di esportazione del set di dati.

SDK for Python (Boto3)

Utilizza quanto segue create_dataset_export_job per esportare i dati in un set di dati in un bucket Amazon S3. Assegna un nome al lavoro, dataset arn sostituiscilo con l'Amazon Resource Name (ARN) del set di dati che desideri esportare e sostituiscilo con role ARN l'ARN del ruolo del servizio Amazon Personalize in cui hai creato. Creazione di un ruolo IAM per Amazon Personalize Inoltres3DataDestination, fornisci facoltativamente l'kmsKeyArnARN per la AWS KMS tua chiave e per il percorso path del bucket Amazon S3 di output.

PeringestionMode, specifica i dati da esportare tra le seguenti opzioni:

  • Specificate BULK di esportare solo i dati importati in blocco utilizzando un processo di importazione del set di dati.

  • Specificate PUT di esportare solo i dati importati singolarmente utilizzando la console o le PutEvents operazioni PutUsers, oPutItems.

  • ALLSpecificare di esportare tutti i dati nel set di dati.

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

Utilizzate il seguente createDatasetExportJob metodo per creare un processo di esportazione del set di dati. Passa quanto segue come parametri: a PersonalizeClient, il nome del processo di esportazione, l'ARN del set di dati che desideri esportare, la modalità di inserimento, il percorso per il bucket Amazon S3 di output e l'ARN per la tua chiave. AWS KMS

ingestionModePuò essere una delle seguenti opzioni:

  • IngestionMode.BULKUtilizzatela per esportare solo i dati importati in blocco utilizzando un processo di importazione del set di dati.

  • IngestionMode.PUTDa utilizzare per esportare solo i dati importati singolarmente utilizzando la console o le PutEvents operazioni PutUsers, oPutItems.

  • Utilizzare IngestionMode.ALL per esportare tutti i dati nel set di dati.

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