Mengekspor titik akhir dari Amazon Pinpoint - Amazon Pinpoint

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengekspor titik akhir dari Amazon Pinpoint

Untuk mendapatkan semua informasi yang dimiliki Amazon Pinpoint tentang audiens Anda, Anda dapat mengekspor definisi titik akhir yang termasuk dalam proyek. Saat Anda mengekspor, Amazon Pinpoint menempatkan definisi titik akhir dalam bucket Amazon S3 yang Anda tentukan. Mengekspor titik akhir berguna saat Anda ingin:

  • Lihat data terbaru tentang titik akhir baru dan yang sudah ada yang didaftarkan aplikasi klien Anda di Amazon Pinpoint.

  • Sinkronkan data endpoint di Amazon Pinpoint dengan sistem Customer Relationship Management (CRM) Anda sendiri.

  • Buat laporan tentang atau analisis data pelanggan Anda.

Sebelum Anda mulai

Sebelum Anda dapat mengekspor titik akhir, Anda memerlukan sumber daya berikut di AWS akun Anda:

  • Bucket Amazon S3. Untuk membuat bucket, lihat Membuat bucket di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.

  • Peran AWS Identity and Access Management (IAM) yang memberikan izin menulis Amazon Pinpoint untuk bucket Amazon S3 Anda. Untuk membuat peran, lihatIAMperan untuk mengekspor titik akhir atau segmen.

Contoh

Contoh berikut menunjukkan cara mengekspor titik akhir dari proyek Amazon Pinpoint, lalu mengunduh titik akhir tersebut dari bucket Amazon S3 Anda.

AWS CLI

Anda dapat menggunakan Amazon Pinpoint dengan menjalankan perintah dengan file. AWS CLI

contoh Buat perintah pekerjaan ekspor

Untuk mengekspor titik akhir dalam proyek Amazon Pinpoint Anda, gunakan create-export-jobperintah:

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

Di mana:

  • application-idadalah ID proyek Amazon Pinpoint yang berisi titik akhir.

  • bucket-name/prefix/adalah nama bucket Amazon S3 Anda dan, secara opsional, awalan yang membantu Anda mengatur objek di bucket secara hierarkis. Misalnya, awalan yang berguna mungkinpinpoint/exports/endpoints/.

  • iam-export-role-arnadalah Nama Sumber Daya Amazon (ARN) dari peran IAM yang memberikan akses tulis Amazon Pinpoint ke bucket.

Tanggapan terhadap perintah ini memberikan rincian tentang pekerjaan ekspor:

{ "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" } }

Respons memberikan ID pekerjaan dengan Id atribut. Anda dapat menggunakan ID ini untuk memeriksa status pekerjaan ekspor saat ini.

contoh Dapatkan perintah pekerjaan ekspor

Untuk memeriksa status pekerjaan ekspor saat ini, gunakan get-export-jobperintah:

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

Di mana:

  • application-idadalah ID proyek Amazon Pinpoint tempat Anda mengekspor titik akhir.

  • job-idadalah ID pekerjaan yang Anda periksa.

Tanggapan terhadap perintah ini memberikan status pekerjaan ekspor saat ini:

{ "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" } }

Respons memberikan status pekerjaan dengan JobStatus atribut. Saat nilai status pekerjaanCOMPLETED, Anda bisa mendapatkan titik akhir yang diekspor dari bucket Amazon S3.

contoh Perintah S3 CP

Untuk mengunduh titik akhir yang diekspor, gunakan perintah Amazon cpS3:

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

Di mana:

  • bucket-name/prefix/keyadalah lokasi file.gz yang ditambahkan Amazon Pinpoint ke bucket Anda saat Anda mengekspor titik akhir. File ini berisi definisi titik akhir yang diekspor. Misalnya, di URL https://PINPOINT-EXAMPLE-BUCKET.s3.us-west-2.amazonaws.com/Exports/example.csv, PINPOINT-EXAMPLE-BUCKET adalah nama bucket dan Exports/example.csv merupakan kuncinya. Untuk informasi selengkapnya tentang Kunci, lihat Kunci di Panduan Pengguna Amazon S3.

  • /local/directory/adalah jalur file ke direktori lokal yang ingin Anda unduh titik akhir.

AWS SDK for Java

Anda dapat menggunakan Amazon Pinpoint API di aplikasi Java Anda dengan menggunakan klien yang disediakan oleh. AWS SDK for Java

contoh Kode

Untuk mengekspor titik akhir dari proyek Amazon Pinpoint, inisialisasi CreateExportJobRequest objek. Kemudian, berikan objek ini ke createExportJob metode AmazonPinpoint klien.

Untuk mengunduh titik akhir yang diekspor dari Amazon Pinpoint, gunakan metode getObject klien. 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); } } }

Untuk contoh SDK lengkap, lihat ExportEndpoints.java on. GitHub

HTTP

Anda dapat menggunakan Amazon Pinpoint dengan membuat permintaan HTTP langsung ke REST API.

contoh Permintaan pekerjaan ekspor POST

Untuk mengekspor titik akhir dalam proyek Amazon Pinpoint Anda, keluarkan permintaan ke sumber POST daya Ekspor pekerjaan:

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" }

Di mana:

  • application-idadalah ID proyek Amazon Pinpoint yang berisi titik akhir.

  • bucket-name/prefixadalah nama bucket Amazon S3 Anda dan, secara opsional, awalan yang membantu Anda mengatur objek di bucket secara hierarkis. Misalnya, awalan yang berguna mungkinpinpoint/exports/endpoints/.

  • iam-export-role-arnadalah Nama Sumber Daya Amazon (ARN) dari peran IAM yang memberikan akses tulis Amazon Pinpoint ke bucket.

Tanggapan atas permintaan ini memberikan rincian tentang pekerjaan ekspor:

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

Respons memberikan ID pekerjaan dengan Id atribut. Anda dapat menggunakan ID ini untuk memeriksa status pekerjaan ekspor saat ini.

contoh DAPATKAN permintaan pekerjaan ekspor

Untuk memeriksa status pekerjaan ekspor saat ini, terbitkan GET permintaan ke sumber daya pekerjaan Ekspor:

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

Di mana:

  • application-idadalah ID proyek Amazon Pinpoint tempat Anda mengekspor titik akhir.

  • job-idadalah ID pekerjaan yang Anda periksa.

Tanggapan terhadap permintaan ini memberikan status pekerjaan ekspor saat ini:

{ "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": {} }

Respons memberikan status pekerjaan dengan JobStatus atribut. Saat nilai status pekerjaanCOMPLETED, Anda bisa mendapatkan titik akhir yang diekspor dari bucket Amazon S3.

Untuk informasi selengkapnya tentang sumber daya Ekspor Pekerjaan di Amazon Pinpoint API, termasuk metode HTTP dan parameter permintaan yang didukung, lihat Mengekspor lowongan kerja di Referensi API Amazon Pinpoint.