Exportar endpoints do Amazon Pinpoint - Amazon Pinpoint

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

Exportar endpoints do Amazon Pinpoint

Para obter todas as informações de seu público-alvo contidas no Amazon Pinpoint, você pode exportar as definições do endpoint que pertencem a um projeto. Quando você exporta, o Amazon Pinpoint coloca as definições do endpoint em um bucket do Amazon S3 especificado por você. A exportação de endpoints é útil quando você deseja:

  • Visualizar os dados mais recentes sobre endpoints novos e existentes que seu aplicativo cliente registrou no Amazon Pinpoint.

  • Sincronizar os dados do endpoint no Amazon Pinpoint com seu próprio sistema Customer Relationship Management (CRM - Gerenciamento de relação com o cliente).

  • Criar relatórios sobre os dados de seus clientes ou analisá-los.

Antes de começar

Para poder exportar endpoints, você precisa dos seguintes recursos em sua conta da AWS :

  • Um bucket do Amazon S3. Para criar um bucket, veja Criação de um bucket no Guia do usuário do Amazon Simple Storage Service.

  • Uma função AWS Identity and Access Management (IAM) que concede permissões de gravação ao Amazon Pinpoint para seu bucket do Amazon S3. Para criar o perfil, consulte IAMfunção para exportar endpoints ou segmentos.

Exemplos

Os exemplos a seguir demonstram como exportar endpoints de um projeto do Amazon Pinpoint e fazer download desses endpoints de seu bucket do Amazon S3.

AWS CLI

Você pode usar o Amazon Pinpoint executando comandos com a AWS CLI.

exemplo Comando Create de trabalho de exportação

Para exportar os endpoints em seu projeto do Amazon Pinpoint, use o comando create-export-job:

$ aws pinpoint create-export-job \ > --application-id application-id \ > --export-job-request \ > S3UrlPrefix=s3://bucket-name/prefix/,\ > RoleArn=iam-export-role-arn

Em que:

  • application-id é o ID do projeto do Amazon Pinpoint que contém os endpoints.

  • bucket-name/prefix/ é o nome do bucket do Amazon S3 e, opcionalmente, um prefixo que ajuda a organizar hierarquicamente os objetos no bucket. Por exemplo, um prefixo útil pode ser pinpoint/exports/endpoints/.

  • iam-export-role-arn é o nome do recurso da Amazon (ARN) de um perfil do IAM que concede ao Amazon Pinpoint acesso de gravação ao bucket.

A resposta a esse comando fornece detalhes sobre o trabalho de exportação:

{ "ExportJobResponse": { "CreationDate": "2018-06-04T22:04:20.585Z", "Definition": { "RoleArn": "iam-export-role-arn", "S3UrlPrefix": "s3://s3-bucket-name/prefix/" }, "Id": "7390e0de8e0b462380603c5a4df90bc4", "JobStatus": "CREATED", "Type": "EXPORT" } }

A resposta fornece o ID do trabalho com o atributo Id. Você pode usar esse ID para verificar o status atual do trabalho de exportação.

exemplo Comando Get de trabalho de exportação

Para verificar o status atual do trabalho de exportação, use o comando get-export-job:

$ aws pinpoint get-export-job \ > --application-id application-id \ > --job-id job-id

Em que:

  • application-id é o ID do projeto do Amazon Pinpoint do qual você exportou os endpoints.

  • job-id é o ID do trabalho que você está verificando.

A resposta a esse comando fornece o estado atual do trabalho de exportação:

{ "ExportJobResponse": { "ApplicationId": "application-id", "CompletedPieces": 1, "CompletionDate": "2018-05-08T22:16:48.228Z", "CreationDate": "2018-05-08T22:16:44.812Z", "Definition": {}, "FailedPieces": 0, "Id": "6c99c463f14f49caa87fa27a5798bef9", "JobStatus": "COMPLETED", "TotalFailures": 0, "TotalPieces": 1, "TotalProcessed": 215, "Type": "EXPORT" } }

A resposta fornece o status do trabalho com o atributo JobStatus. Quando o valor do status do trabalho for COMPLETED, você obterá os endpoints exportados em seu bucket do Amazon S3.

exemplo Comando CP do S3

Para fazer download dos endpoints exportados, use o comando cp do Amazon S3:

$ aws s3 cp s3://bucket-name/prefix/key.gz /local/directory/

Em que:

  • bucket-name/prefix/key é o local do arquivo .gz que o Amazon Pinpoint adicionou ao bucket quando você exportou os endpoints. Esse arquivo contém as definições dos endpoints exportados. Por exemplo, no URL https://PINPOINT-EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com/Exports/example.csv, PINPOINT-EXAMPLE-BUCKET é o nome do bucket e Exports/example.csv é a chave. Para obter mais informações sobre Chaves, consulte Chaves no Guia do usuário do Amazon S3.

  • /local/directory/ é o caminho do arquivo para o diretório local no qual você deseja fazer download dos endpoints.

AWS SDK for Java

Você pode usar a API do Amazon Pinpoint em seus aplicativos Java usando o cliente fornecido pelo AWS SDK for Java.

exemplo Código

Para exportar endpoints de um projeto do Amazon Pinpoint, inicialize um objeto CreateExportJobRequest. Em seguida, passe esse objeto para o método createExportJob do cliente do AmazonPinpoint.

Para fazer download dos endpoints exportados do Amazon Pinpoint, use o método getObject do cliente AmazonS3.

import software.amazon.awssdk.core.ResponseBytes; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.pinpoint.PinpointClient; import software.amazon.awssdk.services.pinpoint.model.ExportJobRequest; import software.amazon.awssdk.services.pinpoint.model.PinpointException; import software.amazon.awssdk.services.pinpoint.model.CreateExportJobRequest; import software.amazon.awssdk.services.pinpoint.model.CreateExportJobResponse; import software.amazon.awssdk.services.pinpoint.model.GetExportJobResponse; import software.amazon.awssdk.services.pinpoint.model.GetExportJobRequest; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.GetObjectRequest; import software.amazon.awssdk.services.s3.model.ListObjectsV2Request; import software.amazon.awssdk.services.s3.model.ListObjectsV2Response; import software.amazon.awssdk.services.s3.model.S3Object; import software.amazon.awssdk.services.s3.model.GetObjectResponse; import software.amazon.awssdk.services.s3.model.S3Exception; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors;
import software.amazon.awssdk.core.ResponseBytes; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.pinpoint.PinpointClient; import software.amazon.awssdk.services.pinpoint.model.ExportJobRequest; import software.amazon.awssdk.services.pinpoint.model.PinpointException; import software.amazon.awssdk.services.pinpoint.model.CreateExportJobRequest; import software.amazon.awssdk.services.pinpoint.model.CreateExportJobResponse; import software.amazon.awssdk.services.pinpoint.model.GetExportJobResponse; import software.amazon.awssdk.services.pinpoint.model.GetExportJobRequest; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.GetObjectRequest; import software.amazon.awssdk.services.s3.model.ListObjectsV2Request; import software.amazon.awssdk.services.s3.model.ListObjectsV2Response; import software.amazon.awssdk.services.s3.model.S3Object; import software.amazon.awssdk.services.s3.model.GetObjectResponse; import software.amazon.awssdk.services.s3.model.S3Exception; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** * To run this code example, you need to create an AWS Identity and Access * Management (IAM) role with the correct policy as described in this * documentation: * https://docs.aws.amazon.com/pinpoint/latest/developerguide/audience-data-export.html * * Also, set up your development environment, including your credentials. * * For information, see this documentation topic: * * https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/get-started.html */ public class ExportEndpoints { public static void main(String[] args) { final String usage = """ This program performs the following steps: 1. Exports the endpoints to an Amazon S3 bucket. 2. Downloads the exported endpoints files from Amazon S3. 3. Parses the endpoints files to obtain the endpoint IDs and prints them. Usage: ExportEndpoints <applicationId> <s3BucketName> <iamExportRoleArn> <path> Where: applicationId - The ID of the Amazon Pinpoint application that has the endpoint. s3BucketName - The name of the Amazon S3 bucket to export the JSON file to.\s iamExportRoleArn - The ARN of an IAM role that grants Amazon Pinpoint write permissions to the S3 bucket. path - The path where the files downloaded from the Amazon S3 bucket are written (for example, C:/AWS/). """; if (args.length != 4) { System.out.println(usage); System.exit(1); } String applicationId = args[0]; String s3BucketName = args[1]; String iamExportRoleArn = args[2]; String path = args[3]; System.out.println("Deleting an application with ID: " + applicationId); Region region = Region.US_EAST_1; PinpointClient pinpoint = PinpointClient.builder() .region(region) .build(); S3Client s3Client = S3Client.builder() .region(region) .build(); exportAllEndpoints(pinpoint, s3Client, applicationId, s3BucketName, path, iamExportRoleArn); pinpoint.close(); s3Client.close(); } public static void exportAllEndpoints(PinpointClient pinpoint, S3Client s3Client, String applicationId, String s3BucketName, String path, String iamExportRoleArn) { try { List<String> objectKeys = exportEndpointsToS3(pinpoint, s3Client, s3BucketName, iamExportRoleArn, applicationId); List<String> endpointFileKeys = objectKeys.stream().filter(o -> o.endsWith(".gz")) .collect(Collectors.toList()); downloadFromS3(s3Client, path, s3BucketName, endpointFileKeys); } catch (PinpointException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } } public static List<String> exportEndpointsToS3(PinpointClient pinpoint, S3Client s3Client, String s3BucketName, String iamExportRoleArn, String applicationId) { SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH_mm:ss.SSS_z"); String endpointsKeyPrefix = "exports/" + applicationId + "_" + dateFormat.format(new Date()); String s3UrlPrefix = "s3://" + s3BucketName + "/" + endpointsKeyPrefix + "/"; List<String> objectKeys = new ArrayList<>(); String key; try { // Defines the export job that Amazon Pinpoint runs. ExportJobRequest jobRequest = ExportJobRequest.builder() .roleArn(iamExportRoleArn) .s3UrlPrefix(s3UrlPrefix) .build(); CreateExportJobRequest exportJobRequest = CreateExportJobRequest.builder() .applicationId(applicationId) .exportJobRequest(jobRequest) .build(); System.out.format("Exporting endpoints from Amazon Pinpoint application %s to Amazon S3 " + "bucket %s . . .\n", applicationId, s3BucketName); CreateExportJobResponse exportResult = pinpoint.createExportJob(exportJobRequest); String jobId = exportResult.exportJobResponse().id(); System.out.println(jobId); printExportJobStatus(pinpoint, applicationId, jobId); ListObjectsV2Request v2Request = ListObjectsV2Request.builder() .bucket(s3BucketName) .prefix(endpointsKeyPrefix) .build(); // Create a list of object keys. ListObjectsV2Response v2Response = s3Client.listObjectsV2(v2Request); List<S3Object> objects = v2Response.contents(); for (S3Object object : objects) { key = object.key(); objectKeys.add(key); } return objectKeys; } catch (PinpointException e) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } return null; } private static void printExportJobStatus(PinpointClient pinpointClient, String applicationId, String jobId) { GetExportJobResponse getExportJobResult; String status; try { // Checks the job status until the job completes or fails. GetExportJobRequest exportJobRequest = GetExportJobRequest.builder() .jobId(jobId) .applicationId(applicationId) .build(); do { getExportJobResult = pinpointClient.getExportJob(exportJobRequest); status = getExportJobResult.exportJobResponse().jobStatus().toString().toUpperCase(); System.out.format("Export job %s . . .\n", status); TimeUnit.SECONDS.sleep(3); } while (!status.equals("COMPLETED") && !status.equals("FAILED")); if (status.equals("COMPLETED")) { System.out.println("Finished exporting endpoints."); } else { System.err.println("Failed to export endpoints."); System.exit(1); } } catch (PinpointException | InterruptedException e) { System.err.println(e.getMessage()); System.exit(1); } } // Download files from an Amazon S3 bucket and write them to the path location. public static void downloadFromS3(S3Client s3Client, String path, String s3BucketName, List<String> objectKeys) { String newPath; try { for (String key : objectKeys) { GetObjectRequest objectRequest = GetObjectRequest.builder() .bucket(s3BucketName) .key(key) .build(); ResponseBytes<GetObjectResponse> objectBytes = s3Client.getObjectAsBytes(objectRequest); byte[] data = objectBytes.asByteArray(); // Write the data to a local file. String fileSuffix = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); newPath = path + fileSuffix + ".gz"; File myFile = new File(newPath); OutputStream os = new FileOutputStream(myFile); os.write(data); } System.out.println("Download finished."); } catch (S3Exception | NullPointerException | IOException e) { System.err.println(e.getMessage()); System.exit(1); } } }

Para ver o exemplo completo do SDK, consulte ExportEndpoints.java on. GitHub

HTTP

Você pode usar o Amazon Pinpoint fazendo solicitações HTTP diretamente para a API REST.

exemplo Solicitação POST de trabalho de exportação

Para exportar os endpoints em seu projeto do Amazon Pinpoint, envie uma solicitação POST para o recurso Trabalhos de exportação:

POST /v1/apps/application_id/jobs/export HTTP/1.1 Content-Type: application/json Accept: application/json Host: pinpoint.us-east-1.amazonaws.com X-Amz-Date: 20180606T001238Z Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180606/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;cache-control;content-length;content-type;host;postman-token;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170 Cache-Control: no-cache { "S3UrlPrefix": "s3://bucket-name/prefix", "RoleArn": "iam-export-role-arn" }

Em que:

  • application-id é o ID do projeto do Amazon Pinpoint que contém os endpoints.

  • bucket-name/prefix é o nome do bucket do Amazon S3 e, opcionalmente, um prefixo que ajuda a organizar hierarquicamente os objetos no bucket. Por exemplo, um prefixo útil pode ser pinpoint/exports/endpoints/.

  • iam-export-role-arn é o nome do recurso da Amazon (ARN) de um perfil do IAM que concede ao Amazon Pinpoint acesso de gravação ao bucket.

A resposta a essa solicitação fornece detalhes sobre o trabalho de exportação:

{ "Id": "611bdc54c75244bfa51fe7001ddb2e36", "JobStatus": "CREATED", "CreationDate": "2018-06-06T00:12:43.271Z", "Type": "EXPORT", "Definition": { "S3UrlPrefix": "s3://bucket-name/prefix", "RoleArn": "iam-export-role-arn" } }

A resposta fornece o ID do trabalho com o atributo Id. Você pode usar esse ID para verificar o status atual do trabalho de exportação.

exemplo Solicitação GET de trabalho de exportação

Para verificar o status atual de um trabalho de exportação, envie uma solicitação GET para o recurso de Trabalho de exportação:

GET /v1/apps/application_id/jobs/export/job_id HTTP/1.1 Content-Type: application/json Accept: application/json Host: pinpoint.us-east-1.amazonaws.com X-Amz-Date: 20180606T002443Z Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180606/us-east-1/mobiletargeting/aws4_request, SignedHeaders=accept;cache-control;content-type;host;postman-token;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170 Cache-Control: no-cache

Em que:

  • application-id é o ID do projeto do Amazon Pinpoint do qual você exportou os endpoints.

  • job-id é o ID do trabalho que você está verificando.

A resposta a essa solicitação fornece o estado atual do trabalho de exportação:

{ "ApplicationId": "application_id", "Id": "job_id", "JobStatus": "COMPLETED", "CompletedPieces": 1, "FailedPieces": 0, "TotalPieces": 1, "CreationDate": "2018-06-06T00:12:43.271Z", "CompletionDate": "2018-06-06T00:13:01.141Z", "Type": "EXPORT", "TotalFailures": 0, "TotalProcessed": 217, "Definition": {} }

A resposta fornece o status do trabalho com o atributo JobStatus. Quando o valor do status do trabalho for COMPLETED, você obterá os endpoints exportados em seu bucket do Amazon S3.

Para obter mais informações sobre o recurso de trabalhos de exportação na API do Amazon Pinpoint, incluindo os métodos HTTP e os parâmetros de solicitação compatíveis consulte Trabalhos de exportação na Referência da API do Amazon Pinpoint.