Exportação dos dados de treinamento em um conjunto de dados para o Amazon S3 - Amazon Personalize

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Exportação dos dados de treinamento em um conjunto de dados para o Amazon S3

Depois de importar dados para um conjunto de dados do Amazon Personalize, você pode exportar os dados para um bucket do Amazon S3. É possível exportar dados para verificar e inspecionar os dados que o Amazon Personalize usa para gerar recomendações, visualizar os eventos de interação com itens registrados anteriormente em tempo real ou realizar análises off-line nos dados.

Você pode optar por exportar somente os dados que você importou em massa (importados usando uma tarefa de importação do conjunto de dados do Amazon Personalize), somente os dados que você importou individualmente (registros importados usando o console ou operações PutEvents, PutUsers ou PutItems), ou ambos.

nota

Não é possível exportar dados em um conjunto de dados de ações nem de interações com ações.

Para registros que correspondam exatamente a todos os campos, o Amazon Personalize exporta apenas um registro. Se dois registros tiverem a mesma ID, mas um ou mais campos forem diferentes, o Amazon Personalize incluirá ou removerá os registros dependendo dos dados que você escolher exportar:

  • Se você exportar dados em massa e incrementais, o Amazon Personalize exportará somente os itens mais novos com o mesmo ID (nas exportações do conjunto de dados de itens) e somente os usuários com o mesmo ID (nas exportações do conjunto de dados de usuários). No caso de conjuntos de dados de interações com itens, o Amazon Personalize exporta todos os dados de interações com itens.

  • Se você exportar somente dados incrementais, o Amazon Personalize exportará todos os dados de itens, usuários ou interações com itens importados individualmente, incluindo itens ou usuários com os mesmos IDs. Somente registros que correspondam exatamente a todos os campos são excluídos.

  • Se você exportar somente dados em massa, o Amazon Personalize incluirá todos os dados de itens, usuários ou interações com itens importados em massa, incluindo itens ou usuários com os mesmos IDs. Somente registros que correspondam exatamente a todos os campos são excluídos.

Para exportar um conjunto de dados, crie uma tarefa de exportação do conjunto de dados. Uma tarefa de exportação de registros é uma ferramenta de exportação de registro que envia os registros em um conjunto de dados para um ou mais arquivos CSV em um bucket do Amazon S3. O arquivo CSV de saída inclui uma linha de cabeçalho com nomes de colunas que correspondem aos campos no esquema do conjunto de dados.

Requisitos de permissões de tarefa para exportação de conjuntos de dados

Para exportar um conjunto de dados, o Amazon Personalize precisa de permissão para adicionar arquivos ao seu bucket do Amazon S3. Para conceder permissões, anexe uma nova política AWS Identity and Access Management (IAM) ao seu perfil de serviço do Amazon Personalize que conceda ao perfil permissão para usar as ações PutObject e ListBucket em seu bucket, e anexe uma política de bucket ao seu bucket do Amazon S3 de saída que conceda ao princípio do Amazon Personalize permissão para usar as ações PutObject e ListBucket.

Se você usar AWS Key Management Service (AWS KMS) para criptografia, deverá conceder permissão ao Amazon Personalize e à sua função de serviço Amazon Personalize IAM para usar sua chave. Para ter mais informações, consulte Como conceder permissão ao Amazon Personalize para usar sua chave AWS KMS.

Política de perfil de serviço para exportar um conjunto de dados

O exemplo de política a seguir concede ao seu perfil de serviço do Amazon Personalize permissão para usar as ações PutObject e ListBucket. Substitua bucket-name pelo nome de seu bucket de saída. Para obter informações sobre quais políticas associar ao perfil de serviço do IAM, consulte Como anexar uma política do Amazon S3 ao seu perfil de serviço do 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 bucket do Amazon S3 para exportar um conjunto de dados

O exemplo de política a seguir concede ao Amazon Personalize permissão para usar as ações PutObject e ListBucket no bucket do Amazon S3. Substitua bucket-name pelo nome do seu bucket. Para obter informações sobre como adicionar uma política de bucket do Amazon S3 a um bucket, consulte Adicionar uma política de bucket usando o console do Amazon S3 no Guia do usuário do 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/*" ] } ] }

Criação de um trabalho de exportação de conjunto de dados

Você pode criar um trabalho de exportação de conjunto de dados com o console Amazon Personalize AWS Command Line Interface ,AWS CLI() ou SDKs. AWS

Depois de importar seus dados para um conjunto de dados e criar um bucket de saída do Amazon S3, você pode exportar os dados para o bucket para análise. Para exportar um conjunto de dados usando o console do Amazon Personalize, crie uma tarefa de exportação do conjunto de dados. Para obter informações sobre como criar um bucket do Amazon S3, consulte Criação de um bucket, no Guia do usuário do Amazon Simple Storage Service.

Antes de exportar um conjunto de dados, certifique-se de que seu perfil de serviço do Amazon Personalize possa acessar e gravar em seu bucket do Amazon S3 de saída. Consulte Requisitos de permissões de tarefa para exportação de conjuntos de dados.

Para criar uma tarefa de exportação do conjunto de dados (console)
  1. Abra o console do Amazon Personalize em https://console.aws.amazon.com/personalize/home.

  2. No painel de navegação, selecione Grupos de conjuntos de dados.

  3. Na página Grupos de conjuntos de dados, escolha seu grupo de conjuntos de dados.

  4. No painel de navegação, selecione Conjuntos de dados.

  5. Escolha o conjunto de dados que deseja exportar para um bucket do Amazon S3.

  6. Em Tarefas de exportação do conjunto de dados, selecione Criar tarefa de exportação do conjunto de dados.

  7. Em Detalhes da tarefa de exportação do conjunto de dados, em Nome da tarefa de exportação do conjunto de dados, digite um nome para a tarefa de exportação.

  8. Para Perfil de serviço do IAM, selecione o perfil de serviço do Amazon Personalize que você criou em Criar um perfil do IAM para o Amazon Personalize.

  9. Para o caminho de saída de dados do Amazon S3, insira o bucket de destino do Amazon S3. Use a seguinte sintaxe:

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

  10. Se você estiver usando AWS KMS para criptografia, para ARN da chave KMS, insira o Amazon Resource Name (ARN) para a chave. AWS KMS

  11. Em Exportar tipo de dados, escolha o tipo de dados a ser exportado com base em como você importou os dados originalmente.

    • Escolha Em massa para exportar somente os dados que você importou em massa usando uma tarefa de importação do conjunto de dados.

    • Escolha Incremental para exportar somente os dados que você importou individualmente usando o console ou as operações PutEvents, PutUsers ou PutItems.

    • Escolha Ambos para exportar todos os dados no conjunto de dados.

  12. Para Tags, é possível adicionar quaisquer tags. Para obter mais informações sobre recursos de atribuição de tags do Amazon Personalize, consulte Usar tags nos recursos do Amazon Personalize.

  13. Escolha Criar tarefa de exportação do conjunto de dados.

    Na página Visão geral do conjunto de dados, em Tarefas de exportação do conjunto de dados, a tarefa é listada com um Status da tarefa de exportação. A tarefa de importação do conjunto de dados estará concluída quando o status for ATIVO. Em seguida, baixe os dados do bucket de saída do Amazon S3. Para obter informações sobre como baixar objetos de um bucket do Amazon S3, consulte Baixar um objeto, no Guia do usuário do Amazon Simple Storage Service.

Depois de importar seus dados para o conjunto de dados e criar um bucket de saída do Amazon S3, você pode exportar o conjunto dados para o bucket para análise. Para exportar um conjunto de dados usando o AWS CLI, crie um trabalho de exportação de conjunto de dados usando o create-dataset-export-job AWS CLI comando. Para obter informações sobre como criar um bucket do Amazon S3, consulte Criação de um bucket, no Guia do usuário do Amazon Simple Storage Service.

Antes de exportar um conjunto de dados, certifique-se de que o perfil de serviço do Amazon Personalize possa acessar e gravar em seu bucket do Amazon S3 de saída. Consulte Requisitos de permissões de tarefa para exportação de conjuntos de dados.

Veja a seguir um exemplo do comando create-dataset-export-job AWS CLI . Dê um nome à tarefa, substitua dataset arn pelo nome do recurso da Amazon (ARN) do conjunto de dados que deseja exportar e substitua role ARN pelo ARN do perfil de serviço do Amazon Personalize que você criou no Criar um perfil do IAM para o Amazon Personalize. Ems3DataDestination, para okmsKeyArn, forneça opcionalmente o ARN para AWS KMS sua chave e, para o, forneça path o caminho para seu bucket de saída do Amazon S3.

Para ingestion-mode, especifique os dados a serem exportados das seguintes opções:

  • Especifique BULK para exportar somente os dados que você importou em massa usando uma tarefa de importação do conjunto de dados.

  • Especifique PUT para exportar somente os dados que você importou individualmente usando o console ou as PutItems operações PutEvents PutUsers,, ou.

  • Especifique ALL para exportar todos os dados no conjunto de dados.

Para obter mais informações, 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

O ARN da tarefa de importação do conjunto de dados é exibido.

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

Use a operação DescribeDatasetExportJob para verificar o status.

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

Depois de importar seus dados para o conjunto de dados e criar um bucket de saída do Amazon S3, você pode exportar o conjunto dados para o bucket para análise. Para exportar um conjunto de dados usando os AWS SDKs, crie um trabalho de exportação de conjunto de dados usando a operação. CreateDatasetExportJob Para obter informações sobre como criar um bucket do Amazon S3, consulte Criação de um bucket, no Guia do usuário do Amazon Simple Storage Service.

O código a seguir mostra como criar uma tarefa de exportação do conjunto de dados usando o SDK para Python (Boto3) ou o SDK para Java 2.x.

Antes de exportar um conjunto de dados, certifique-se de que o perfil de serviço do Amazon Personalize possa acessar e gravar em seu bucket do Amazon S3 de saída. Consulte Requisitos de permissões de tarefa para exportação de conjuntos de dados.

SDK for Python (Boto3)

Use o seguinte create_dataset_export_job para exportar os dados de um conjunto de dados para um bucket do Amazon S3. Dê um nome à tarefa, substitua dataset arn pelo nome do recurso da Amazon (ARN) do conjunto de dados que deseja exportar e substitua role ARN pelo ARN do perfil de serviço do Amazon Personalize que você criou no Criar um perfil do IAM para o Amazon Personalize. Ems3DataDestination, para okmsKeyArn, forneça opcionalmente o ARN para AWS KMS sua chave e, para o, forneça path o caminho para seu bucket de saída do Amazon S3.

Para ingestionMode, especifique os dados a serem exportados das seguintes opções:

  • Especifique BULK para exportar somente os dados que você importou em massa usando uma tarefa de importação do conjunto de dados.

  • Especifique PUT para exportar somente os dados que você importou individualmente usando o console ou as PutItems operações PutEvents PutUsers,, ou.

  • Especifique ALL para exportar todos os dados no conjunto de dados.

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

Use o método createDatasetExportJob a seguir para criar uma tarefa de exportação de conjuntos de dados. Passe o seguinte como parâmetros: a PersonalizeClient, o nome do seu trabalho de exportação, o ARN do conjunto de dados que você deseja exportar, o modo de ingestão, o caminho para o bucket de saída do Amazon S3 e o ARN da sua chave. AWS KMS

O ingestionMode pode ser uma das seguintes opções:

  • Use IngestionMode.BULK para exportar somente os dados que você importou em massa usando uma tarefa de importação do conjunto de dados.

  • Use IngestionMode.PUT para exportar somente dados que você importou individualmente usando o console ou as PutItems operações PutEvents PutUsers,, ou.

  • Use IngestionMode.ALL para exportar todos os dados no conjunto de dados.

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