Impor titik akhir ke Amazon Pinpoint - Amazon Pinpoint

Pemberitahuan akhir dukungan: Pada 30 Oktober 2026, AWS akan mengakhiri dukungan untuk Amazon Pinpoint. Setelah 30 Oktober 2026, Anda tidak akan lagi dapat mengakses konsol Amazon Pinpoint atau sumber daya Amazon Pinpoint (titik akhir, segmen, kampanye, perjalanan, dan analitik). Untuk informasi selengkapnya, lihat Amazon Pinpoint akhir dukungan. Catatan: APIs terkait dengan SMS, suara, push seluler, OTP, dan validasi nomor telepon tidak terpengaruh oleh perubahan ini dan didukung oleh AWS End User Messaging.

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

Impor titik akhir ke Amazon Pinpoint

Anda dapat menambahkan atau memperbarui titik akhir dalam jumlah besar dengan mengimpornya dari bucket Amazon S3. Mengimpor titik akhir berguna jika Anda memiliki catatan tentang audiens di luar Amazon Pinpoint, dan Anda ingin menambahkan informasi ini ke proyek Amazon Pinpoint. Dalam hal ini, Anda akan:

  1. Buat definisi titik akhir yang didasarkan pada data audiens Anda sendiri.

  2. Simpan definisi titik akhir ini dalam satu atau beberapa file, dan unggah file ke bucket Amazon S3.

  3. Tambahkan titik akhir ke project Amazon Pinpoint Anda dengan mengimpornya dari bucket.

Setiap pekerjaan impor dapat mentransfer hingga 1 GB data. Dalam pekerjaan biasa, di mana setiap titik akhir adalah 4 KB atau kurang, Anda dapat mengimpor sekitar 250.000 titik akhir. Anda dapat menjalankan hingga dua pekerjaan impor bersamaan per AWS akun. Jika Anda membutuhkan lebih banyak bandwidth untuk pekerjaan impor Anda, Anda dapat mengirimkan permintaan peningkatan kuota layanan ke Dukungan. Untuk informasi selengkapnya, lihat Meminta peningkatan kuota.

Sebelum kamu memulai

Sebelum Anda dapat mengimpor 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 baca Amazon Pinpoint untuk bucket Amazon S3 Anda. Untuk membuat peran, lihatPeran IAM untuk mengimpor titik akhir atau segmen.

Contoh

Contoh berikut menunjukkan cara menambahkan definisi titik akhir ke bucket Amazon S3 Anda, lalu mengimpor titik akhir tersebut ke dalam project Amazon Pinpoint.

File dengan definisi titik akhir

File yang Anda tambahkan ke bucket Amazon S3 dapat berisi definisi titik akhir dalam format CSV atau JSON yang dibatasi baris baru. Untuk atribut yang dapat Anda gunakan untuk menentukan titik akhir, lihat skema EndpointRequestJSON di Referensi API Amazon Pinpoint.

CSV

Anda dapat mengimpor titik akhir yang ditentukan dalam file CSV, seperti pada contoh berikut:

ChannelType,Address,Location.Country,Demographic.Platform,Demographic.Make,User.UserId SMS,12065550182,CN,Android,LG,example-user-id-1 APNS,1a2b3c4d5e6f7g8h9i0j1a2b3c4d5e6f,US,iOS,Apple,example-user-id-2 EMAIL,john.stiles@example.com,US,iOS,Apple,example-user-id-2

Baris pertama adalah header, yang berisi atribut endpoint. Tentukan atribut bersarang dengan menggunakan notasi titik, seperti pada. Location.Country

Baris berikutnya menentukan titik akhir dengan memberikan nilai untuk masing-masing atribut di header.

Untuk memasukkan koma atau tanda kutip ganda dalam suatu nilai, lampirkan nilainya dalam tanda kutip ganda, seperti dalam. "aaa,bbb"

Jeda baris tidak didukung dalam nilai di CSV.

JSON

Anda dapat mengimpor titik akhir yang ditentukan dalam file JSON yang dibatasi baris baru, seperti pada contoh berikut:

{"ChannelType":"SMS","Address":"12065550182","Location":{"Country":"CN"},"Demographic":{"Platform":"Android","Make":"LG"},"User":{"UserId":"example-user-id-1"}} {"ChannelType":"APNS","Address":"1a2b3c4d5e6f7g8h9i0j1a2b3c4d5e6f","Location":{"Country":"US"},"Demographic":{"Platform":"iOS","Make":"Apple"},"User":{"UserId":"example-user-id-2"}} {"ChannelType":"EMAIL","Address":"john.stiles@example.com","Location":{"Country":"US"},"Demographic":{"Platform":"iOS","Make":"Apple"},"User":{"UserId":"example-user-id-2"}}

Dalam format ini, setiap baris adalah objek JSON lengkap yang berisi definisi titik akhir individu.

Impor permintaan pekerjaan

Contoh berikut menunjukkan cara menambahkan definisi titik akhir ke Amazon S3 dengan mengunggah file lokal ke bucket. Kemudian, contoh mengimpor definisi titik akhir ke dalam proyek Amazon Pinpoint.

AWS CLI

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

contoh Perintah S3 CP

Untuk mengunggah file lokal ke bucket Amazon S3, gunakan perintah Amazon cpS3:

$ aws s3 cp ./endpoints-file s3://bucket-name/prefix/

Di mana:

  • . /endpoints-file adalah path file ke file lokal yang berisi definisi endpoint.

  • 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/imports/endpoints/.

contoh Buat perintah pekerjaan impor

Untuk mengimpor definisi titik akhir dari bucket Amazon S3, gunakan create-import-jobperintah:

$ aws pinpoint create-import-job \ > --application-id application-id \ > --import-job-request \ > S3Url=s3://bucket-name/prefix/key,\ > RoleArn=iam-import-role-arn,\ > Format=format,\ > RegisterEndpoints=true

Di mana:

  • application-id adalah ID proyek Amazon Pinpoint tempat Anda mengimpor titik akhir.

  • bucket- name/prefix/key adalah lokasi di Amazon S3 yang berisi satu atau lebih objek untuk diimpor. Lokasi dapat diakhiri dengan kunci untuk objek individual, atau dapat diakhiri dengan awalan yang memenuhi syarat beberapa objek.

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

  • format dapat berupa JSON atauCSV, tergantung pada format yang Anda gunakan untuk menentukan titik akhir Anda. Jika lokasi Amazon S3 menyertakan beberapa objek format campuran, Amazon Pinpoint hanya mengimpor objek yang cocok dengan format yang ditentukan.

  • RegisterEndpointsbisa salah satu true ataufalse. Ketika disetel ke true, pekerjaan impor akan mendaftarkan titik akhir dengan Amazon Pinpoint, saat definisi titik akhir diimpor.

    RegisterEndpoints dan DefineSegments kombinasi

    RegisterEndpoints

    DefineSegments Deskripsi
    true true Amazon Pinpoint akan mengimpor titik akhir dan membuat segmen yang berisi titik akhir.
    true SALAH Amazon Pinpoint akan mengimpor titik akhir dan tidak membuat segmen.
    SALAH true Amazon Pinpoint akan mengimpor titik akhir dan membuat segmen yang berisi titik akhir. Titik akhir tidak akan disimpan dan tidak akan menimpa titik akhir yang ada.
    false false Amazon Pinpoint akan menolak permintaan ini.

Tanggapan tersebut mencakup detail tentang pekerjaan impor:

{ "ImportJobResponse": { "CreationDate": "2018-05-24T21:26:33.995Z", "Definition": { "DefineSegment": false, "ExternalId": "463709046829", "Format": "JSON", "RegisterEndpoints": true, "RoleArn": "iam-import-role-arn", "S3Url": "s3://bucket-name/prefix/key" }, "Id": "d5ecad8e417d498389e1d5b9454d4e0c", "JobStatus": "CREATED", "Type": "IMPORT" } }

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

contoh Dapatkan perintah pekerjaan impor

Untuk memeriksa status pekerjaan impor saat ini, gunakan get-import-job perintah:

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

Di mana:

  • application-id adalah ID proyek Amazon Pinpoint tempat pekerjaan impor dimulai.

  • job-id adalah ID dari pekerjaan impor yang Anda periksa.

Respons terhadap perintah ini memberikan status pekerjaan impor saat ini:

{ "ImportJobResponse": { "ApplicationId": "application-id", "CompletedPieces": 1, "CompletionDate": "2018-05-24T21:26:45.308Z", "CreationDate": "2018-05-24T21:26:33.995Z", "Definition": { "DefineSegment": false, "ExternalId": "463709046829", "Format": "JSON", "RegisterEndpoints": true, "RoleArn": "iam-import-role-arn", "S3Url": "s3://s3-bucket-name/prefix/endpoint-definitions.json" }, "FailedPieces": 0, "Id": "job-id", "JobStatus": "COMPLETED", "TotalFailures": 0, "TotalPieces": 1, "TotalProcessed": 3, "Type": "IMPORT" } }

Respons memberikan status pekerjaan dengan JobStatus atribut.

AWS SDK untuk Java

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

contoh Kode

Untuk mengunggah file dengan definisi titik akhir ke Amazon S3, gunakan putObject metode klien. AmazonS3

Untuk mengimpor titik akhir ke proyek Amazon Pinpoint, inisialisasi CreateImportJobRequest objek. Kemudian, berikan objek ini ke createImportJob metode AmazonPinpoint klien.

package com.amazonaws.examples.pinpoint; import com.amazonaws.AmazonServiceException; import com.amazonaws.regions.Regions; import com.amazonaws.services.pinpoint.AmazonPinpoint; import com.amazonaws.services.pinpoint.AmazonPinpointClientBuilder; import com.amazonaws.services.pinpoint.model.CreateImportJobRequest; import com.amazonaws.services.pinpoint.model.CreateImportJobResult; import com.amazonaws.services.pinpoint.model.Format; import com.amazonaws.services.pinpoint.model.GetImportJobRequest; import com.amazonaws.services.pinpoint.model.GetImportJobResult; import com.amazonaws.services.pinpoint.model.ImportJobRequest; import com.amazonaws.services.s3.AmazonS3; import com.amazonaws.services.s3.AmazonS3ClientBuilder; import com.amazonaws.services.s3.model.AmazonS3Exception; import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import java.util.concurrent.TimeUnit; public class ImportEndpoints { public static void main(String[] args) { final String USAGE = "\n" + "ImportEndpoints - Adds endpoints to an Amazon Pinpoint application by: \n" + "1.) Uploading the endpoint definitions to an Amazon S3 bucket. \n" + "2.) Importing the endpoint definitions from the bucket to an Amazon Pinpoint " + "application.\n\n" + "Usage: ImportEndpoints <endpointsFileLocation> <s3BucketName> <iamImportRoleArn> " + "<applicationId>\n\n" + "Where:\n" + " endpointsFileLocation - The relative location of the JSON file that contains the " + "endpoint definitions.\n" + " s3BucketName - The name of the Amazon S3 bucket to upload the JSON file to. If the " + "bucket doesn't exist, a new bucket is created.\n" + " iamImportRoleArn - The ARN of an IAM role that grants Amazon Pinpoint read " + "permissions to the S3 bucket.\n" + " applicationId - The ID of the Amazon Pinpoint application to add the endpoints to."; if (args.length < 1) { System.out.println(USAGE); System.exit(1); } String endpointsFileLocation = args[0]; String s3BucketName = args[1]; String iamImportRoleArn = args[2]; String applicationId = args[3]; Path endpointsFilePath = Paths.get(endpointsFileLocation); File endpointsFile = new File(endpointsFilePath.toAbsolutePath().toString()); uploadToS3(endpointsFile, s3BucketName); importToPinpoint(endpointsFile.getName(), s3BucketName, iamImportRoleArn, applicationId); } private static void uploadToS3(File endpointsFile, String s3BucketName) { // Initializes Amazon S3 client. final AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient(); // Checks whether the specified bucket exists. If not, attempts to create one. if (!s3.doesBucketExistV2(s3BucketName)) { try { s3.createBucket(s3BucketName); System.out.format("Created S3 bucket %s.\n", s3BucketName); } catch (AmazonS3Exception e) { System.err.println(e.getErrorMessage()); System.exit(1); } } // Uploads the endpoints file to the bucket. String endpointsFileName = endpointsFile.getName(); System.out.format("Uploading %s to S3 bucket %s . . .\n", endpointsFileName, s3BucketName); try { s3.putObject(s3BucketName, "imports/" + endpointsFileName, endpointsFile); System.out.println("Finished uploading to S3."); } catch (AmazonServiceException e) { System.err.println(e.getErrorMessage()); System.exit(1); } } private static void importToPinpoint(String endpointsFileName, String s3BucketName, String iamImportRoleArn, String applicationId) { // The S3 URL that Amazon Pinpoint requires to find the endpoints file. String s3Url = "s3://" + s3BucketName + "/imports/" + endpointsFileName; // Defines the import job that Amazon Pinpoint runs. ImportJobRequest importJobRequest = new ImportJobRequest() .withS3Url(s3Url) .withRegisterEndpoints(true) .withRoleArn(iamImportRoleArn) .withFormat(Format.JSON); CreateImportJobRequest createImportJobRequest = new CreateImportJobRequest() .withApplicationId(applicationId) .withImportJobRequest(importJobRequest); // Initializes the Amazon Pinpoint client. AmazonPinpoint pinpointClient = AmazonPinpointClientBuilder.standard() .withRegion(Regions.US_EAST_1).build(); System.out.format("Importing endpoints in %s to Amazon Pinpoint application %s . . .\n", endpointsFileName, applicationId); try { // Runs the import job with Amazon Pinpoint. CreateImportJobResult importResult = pinpointClient.createImportJob(createImportJobRequest); String jobId = importResult.getImportJobResponse().getId(); GetImportJobResult getImportJobResult = null; String jobStatus = null; // Checks the job status until the job completes or fails. do { getImportJobResult = pinpointClient.getImportJob(new GetImportJobRequest() .withJobId(jobId) .withApplicationId(applicationId)); jobStatus = getImportJobResult.getImportJobResponse().getJobStatus(); System.out.format("Import job %s . . .\n", jobStatus.toLowerCase()); TimeUnit.SECONDS.sleep(3); } while (!jobStatus.equals("COMPLETED") && !jobStatus.equals("FAILED")); if (jobStatus.equals("COMPLETED")) { System.out.println("Finished importing endpoints."); } else { System.err.println("Failed to import endpoints."); System.exit(1); } // Checks for entries that failed to import. // getFailures provides up to 100 of the first failed entries for the job, if // any exist. List<String> failedEndpoints = getImportJobResult.getImportJobResponse().getFailures(); if (failedEndpoints != null) { System.out.println("Failed to import the following entries:"); for (String failedEndpoint : failedEndpoints) { System.out.println(failedEndpoint); } } } catch (AmazonServiceException | InterruptedException e) { System.err.println(e.getMessage()); System.exit(1); } } }
HTTP

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

contoh Permintaan objek S3 PUT

Untuk menambahkan definisi titik akhir ke bucket, gunakan operasi objek PUT Amazon S3, dan berikan definisi titik akhir sebagai isi:

PUT /prefix/key HTTP/1.1 Content-Type: text/plain Accept: application/json Host: bucket-name.s3.amazonaws.com X-Amz-Content-Sha256: c430dc094b0cec2905bc88d96314914d058534b14e2bc6107faa9daa12fdff2d X-Amz-Date: 20180605T184132Z Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180605/us-east-1/s3/aws4_request, SignedHeaders=accept;cache-control;content-length;content-type;host;postman-token;x-amz-content-sha256;x-amz-date, Signature=c25cbd6bf61bd3b3667c571ae764b9bf2d8af61b875cacced95d1e68d91b4170 Cache-Control: no-cache {"ChannelType":"SMS","Address":"2065550182","Location":{"Country":"CAN"},"Demographic":{"Platform":"Android","Make":"LG"},"User":{"UserId":"example-user-id-1"}} {"ChannelType":"APNS","Address":"1a2b3c4d5e6f7g8h9i0j1a2b3c4d5e6f","Location":{"Country":"USA"},"Demographic":{"Platform":"iOS","Make":"Apple"},"User":{"UserId":"example-user-id-2"}} {"ChannelType":"EMAIL","Address":"john.stiles@example.com","Location":{"Country":"USA"},"Demographic":{"Platform":"iOS","Make":"Apple"},"User":{"UserId":"example-user-id-2"}}

Di mana:

  • /prefix/key adalah awalan dan nama kunci untuk objek yang akan berisi definisi endpoint setelah upload. Anda dapat menggunakan awalan untuk mengatur objek Anda secara hierarkis. Misalnya, awalan yang berguna mungkinpinpoint/imports/endpoints/.

  • bucket-name adalah nama bucket Amazon S3 tempat Anda menambahkan definisi titik akhir.

contoh Permintaan pekerjaan impor POST

Untuk mengimpor definisi titik akhir dari bucket Amazon S3, keluarkan permintaan POST ke sumber daya Impor pekerjaan. Dalam permintaan Anda, sertakan header yang diperlukan dan berikan ImportJobRequestJSON sebagai isi:

POST /v1/apps/application_id/jobs/import HTTP/1.1 Content-Type: application/json Accept: application/json Host: pinpoint.us-east-1.amazonaws.com X-Amz-Date: 20180605T214912Z Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180605/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 { "S3Url": "s3://bucket-name/prefix/key", "RoleArn": "iam-import-role-arn", "Format": "format", "RegisterEndpoints": true }

Di mana:

  • application-id adalah ID proyek Amazon Pinpoint tempat Anda mengimpor titik akhir.

  • bucket- name/prefix/key adalah lokasi di Amazon S3 yang berisi satu atau lebih objek untuk diimpor. Lokasi dapat diakhiri dengan kunci untuk objek individual, atau dapat diakhiri dengan awalan yang memenuhi syarat beberapa objek.

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

  • format dapat berupa JSON atauCSV, tergantung pada format yang Anda gunakan untuk menentukan titik akhir Anda. Jika lokasi Amazon S3 menyertakan beberapa file format campuran, Amazon Pinpoint hanya mengimpor file yang cocok dengan format yang ditentukan.

Jika permintaan Anda berhasil, Anda menerima tanggapan seperti berikut:

{ "Id": "a995ce5d70fa44adb563b7d0e3f6c6f5", "JobStatus": "CREATED", "CreationDate": "2018-06-05T21:49:15.288Z", "Type": "IMPORT", "Definition": { "S3Url": "s3://bucket-name/prefix/key", "RoleArn": "iam-import-role-arn", "ExternalId": "external-id", "Format": "JSON", "RegisterEndpoints": true, "DefineSegment": false } }

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

contoh DAPATKAN permintaan pekerjaan impor

Untuk memeriksa status pekerjaan impor saat ini, terbitkan GET permintaan ke sumber daya pekerjaan Impor:

GET /v1/apps/application_id/jobs/import/job_id HTTP/1.1 Content-Type: application/json Accept: application/json Host: pinpoint.us-east-1.amazonaws.com X-Amz-Date: 20180605T220744Z Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20180605/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_id adalah ID proyek Amazon Pinpoint yang tugas impornya dimulai.

  • job_id adalah ID dari pekerjaan impor yang Anda periksa.

Jika permintaan Anda berhasil, Anda menerima tanggapan seperti berikut:

{ "ApplicationId": "application_id", "Id": "70a51b2cf442447492d2c8e50336a9e8", "JobStatus": "COMPLETED", "CompletedPieces": 1, "FailedPieces": 0, "TotalPieces": 1, "CreationDate": "2018-06-05T22:04:49.213Z", "CompletionDate": "2018-06-05T22:04:58.034Z", "Type": "IMPORT", "TotalFailures": 0, "TotalProcessed": 3, "Definition": { "S3Url": "s3://bucket-name/prefix/key.json", "RoleArn": "iam-import-role-arn", "ExternalId": "external-id", "Format": "JSON", "RegisterEndpoints": true, "DefineSegment": false } }

Respons memberikan status pekerjaan dengan JobStatus atribut.

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