

**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.](https://docs.aws.amazon.com/console/pinpoint/migration-guide) **Catatan:** API yang terkait dengan SMS, suara, push seluler, OTP, dan validasi nomor telepon tidak terpengaruh oleh perubahan ini dan didukung oleh Pesan Pengguna AWS Akhir.

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

# Ekspor titik akhir dari Amazon Pinpoint ke bucket Amazon S3
<a name="audience-define-export"></a>

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.

**catatan**  
Konten yang dikirimkan ke bucket Amazon S3 mungkin berisi konten pelanggan. Jika Anda perlu menghapus data titik akhir yang diekspor ke bucket Amazon S3, Anda harus melakukannya di Amazon S3 Untuk informasi selengkapnya tentang menghapus data sensitif, [lihat Bagaimana Cara](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html) Mengosongkan Bucket S3? atau [Bagaimana Saya Menghapus Bucket S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html) .

## Sebelum Anda mulai
<a name="audience-define-export-before"></a>

Sebelum Anda dapat mengekspor titik akhir, Anda memerlukan sumber daya berikut di AWS akun Anda:
+ Bucket Amazon S3. Untuk membuat bucket, lihat [Membuat bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-bucket.html) 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, lihat[Peran IAM untuk mengekspor titik akhir atau segmen](permissions-export-endpoints.md).

## Contoh
<a name="audience-define-export-examples"></a>

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

**Example Buat perintah pekerjaan ekspor**  
Untuk mengekspor titik akhir dalam proyek Amazon Pinpoint Anda, gunakan [`create-export-job`](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/create-export-job.html)perintah:  

```
$ 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-id`}}adalah 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 mungkin`pinpoint/exports/endpoints/`.
+ {{`iam-export-role-arn`}}adalah 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.

**Example Dapatkan perintah pekerjaan ekspor**  
Untuk memeriksa status pekerjaan ekspor saat ini, gunakan [`get-export-job`](https://docs.aws.amazon.com/cli/latest/reference/pinpoint/get-export-job.html)perintah:  

```
$ aws pinpoint get-export-job \
> --application-id {{application-id}} \
> --job-id {{job-id}}
```

Di mana:
+ {{`application-id`}}adalah ID proyek Amazon Pinpoint tempat Anda mengekspor titik akhir.
+ {{`job-id`}}adalah 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 pekerjaan`COMPLETED`, Anda bisa mendapatkan titik akhir yang diekspor dari bucket Amazon S3.

**Example Perintah S3 CP**  
Untuk mengunduh titik akhir yang diekspor, gunakan perintah Amazon [`cp`](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html)S3:  

```
$ aws s3 cp s3://{{bucket-name/prefix/key.gz}} {{/local/directory/}}
```
Di mana:  
+ {{`bucket-name/prefix/key`}}adalah lokasi file.gz yang ditambahkan Amazon Pinpoint ke bucket 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html#BasicsKeys) di *Panduan Pengguna Amazon S3*. 
+ {{`/local/directory/`}}adalah jalur file ke direktori lokal yang ingin Anda unduh titik akhir.

------
#### [ AWS SDK untuk Java ]

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

**Example 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](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javav2/example_code/pinpoint/src/main/java/com/example/pinpoint/ExportEndpoints.java) on. [GitHub](https://github.com/)

------
#### [ HTTP ]

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

**Example Permintaan pekerjaan ekspor POST**  
Untuk mengekspor titik akhir dalam proyek Amazon Pinpoint Anda, keluarkan permintaan ke sumber `POST` daya [Ekspor pekerjaan](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-jobs-export.html):  

```
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-id`}}adalah 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 mungkin`pinpoint/exports/endpoints/`.
+ {{`iam-export-role-arn`}}adalah 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.

**Example DAPATKAN permintaan pekerjaan ekspor**  
Untuk memeriksa status pekerjaan ekspor saat ini, terbitkan `GET` permintaan ke sumber daya [pekerjaan Ekspor](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-jobs-export-job-id.html):  

```
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-id`}}adalah ID proyek Amazon Pinpoint tempat Anda mengekspor titik akhir.
+ {{`job-id`}}adalah 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 pekerjaan`COMPLETED`, Anda bisa mendapatkan titik akhir yang diekspor dari bucket Amazon S3.

------

## Informasi terkait
<a name="audience-define-export-related"></a>

Untuk menemukan ID titik akhir untuk titik akhir tertentu, Anda harus menentukan segmen mana yang dimiliki titik akhir, lalu mengekspor segmen tersebut dari Amazon Pinpoint. Data yang diekspor menyertakan ID titik akhir untuk setiap titik akhir. Anda dapat mengekspor segmen ke file dengan menggunakan konsol Amazon Pinpoint. Untuk informasi selengkapnya tentang mengekspor segmen, lihat [Mengekspor Segmen](https://docs.aws.amazon.com/pinpoint/latest/userguide/segments-exporting.html) di Panduan Pengguna *Amazon Pinpoint*.

Untuk informasi selengkapnya tentang sumber daya Ekspor Pekerjaan di Amazon Pinpoint API, termasuk metode HTTP dan parameter permintaan yang didukung, lihat [Mengekspor lowongan kerja](https://docs.aws.amazon.com/pinpoint/latest/apireference/apps-application-id-jobs-export.html) di Referensi API *Amazon Pinpoint*.