

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

# Mengekspor data dari instans DB RDS for PostgreSQL ke Amazon S3
<a name="postgresql-s3-export"></a>

Anda dapat mengueri data dari instans DB RDS for PostgreSQL dan mengekspornya langsung ke file yang disimpan dalam bucket Amazon S3. Untuk melakukannya, instal ekstensi RDS for PostgreSQL `aws_s3` terlebih dahulu. Ekstensi ini memberi Anda fungsi yang Anda gunakan untuk mengekspor hasil kueri ke Amazon S3. Berikut ini, Anda dapat mengetahui cara menginstal ekstensi dan cara mengekspor data ke Amazon S3. 

**catatan**  
Ekspor lintas akun ke Amazon S3 tidak didukung. 

Semua versi RDS for PostgreSQL yang tersedia saat ini mendukung ekspor data ke Amazon Simple Storage Service. Untuk informasi versi terperinci, lihat [Pembaruan Amazon RDS for PostgreSQL](https://docs.aws.amazon.com/AmazonRDS/latest/PostgreSQLReleaseNotes/postgresql-versions.html) dalam *Catatan Rilis Amazon RDS for PostgreSQL*.

Jika Anda belum menyiapkan bucket untuk ekspor, lihat topik berikut, *Panduan Pengguna Amazon Simple Storage Service*. 
+ [Menyiapkan Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/setting-up-s3.html)
+ [Membuat bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html)

Secara default, data yang diekspor dari RDS untuk PostgreSQL ke Amazon S3 menggunakan enkripsi sisi server dengan file. Kunci yang dikelola AWS Jika Anda menggunakan enkripsi bucket, bucket Amazon S3 harus dienkripsi dengan kunci AWS Key Management Service (AWS KMS) (SSE-KMS). Saat ini, bucket yang dienkripsi dengan kunci terkelola Amazon S3 (SSE-S3) tidak didukung.

**catatan**  
Anda dapat menyimpan data snapshot DB ke Amazon S3 menggunakan Konsol Manajemen AWS AWS CLI,, atau Amazon RDS API. Untuk informasi selengkapnya, lihat [Mengekspor data snapshot DB ke Amazon S3 untuk Amazon RDS](USER_ExportSnapshot.md).

**Topics**
+ [Menginstal ekstensi aws\$1s3](#USER_PostgreSQL.S3Export.InstallExtension)
+ [Ikhtisar ekspor data ke Amazon S3](#postgresql-s3-export-overview)
+ [Menentukan jalur file Amazon S3 tujuan ekspor](#postgresql-s3-export-file)
+ [Menyiapkan akses ke bucket Amazon S3](postgresql-s3-export-access-bucket.md)
+ [Mengekspor data kueri menggunakan fungsi aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-examples.md)
+ [Referensi fungsi](postgresql-s3-export-functions.md)
+ [Memecahkan masalah akses ke Amazon S3](postgresql-s3-export-troubleshoot.md)

## Menginstal ekstensi aws\$1s3
<a name="USER_PostgreSQL.S3Export.InstallExtension"></a>

Sebelum Anda dapat menggunakan Amazon Simple Storage Service dengan instans DB RDS for PostgreSQL, Anda perlu menginstal ekstensi `aws_s3`. Ekstensi ini memberikan fungsi untuk mengekspor data dari instans DB RDS for PostgreSQL ke bucket Amazon S3. Ini juga menyediakan fungsi untuk mengimpor data dari Amazon S3. Untuk informasi selengkapnya, lihat [Mengimpor data dari Amazon S3 ke instans DB RDS for PostgreSQL](USER_PostgreSQL.S3Import.md). Ekstensi `aws_s3` bergantung pada beberapa fungsi pembantu dalam ekstensi `aws_commons`, yang diinstal secara otomatis bila diperlukan. 

**Untuk menginstal ekstensi `aws_s3`**

1. Gunakan psql (atau pgAdmin) untuk terhubung ke instans DB RDS for PostgreSQL sebagai pengguna yang memiliki hak istimewa `rds_superuser`. Jika Anda menyimpan nama default selama proses penyiapan, Anda terhubung sebagai `postgres`.

   ```
   psql --host=111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
   ```

1. Untuk menginstal ekstensi, jalankan perintah berikut. 

   ```
   postgres=> CREATE EXTENSION aws_s3 CASCADE;
   NOTICE: installing required extension "aws_commons"
   CREATE EXTENSION
   ```

1. Untuk memverifikasi bahwa ekstensi sudah diinstal, Anda dapat menggunakan metacommand psql `\dx`.

   ```
   postgres=> \dx
          List of installed extensions
       Name     | Version |   Schema   |                 Description
   -------------+---------+------------+---------------------------------------------
    aws_commons | 1.2     | public     | Common data types across AWS services
    aws_s3      | 1.1     | public     | AWS S3 extension for importing data from S3
    plpgsql     | 1.0     | pg_catalog | PL/pgSQL procedural language
   (3 rows)
   ```

Fungsi untuk mengimpor data dari Amazon S3 dan mengekspor data ke Amazon S3 kini dapat digunakan.

### Verifikasi bahwa RDS Anda untuk PostgreSQL Aurora PostgreSQL ke Amazon S3
<a name="postgresql-s3-supported"></a>

Anda dapat memverifikasi bahwa versi RDS for PostgreSQL mendukung ekspor ke Amazon S3 dengan menggunakan perintah `describe-db-engine-versions`. Contoh berikut memverifikasi dukungan untuk versi 10.14.

```
aws rds describe-db-engine-versions --region us-east-1
--engine postgres --engine-version 10.14 | grep s3Export
```

Jika output-nya menyertakan string `"s3Export"`, berarti mesinnya mendukung ekspor Amazon S3. Jika tidak, mesin tidak mendukungnya.

## Ikhtisar ekspor data ke Amazon S3
<a name="postgresql-s3-export-overview"></a>

Untuk mengekspor data yang disimpan dalam basis data RDS for PostgreSQL ke bucket Amazon S3, gunakan prosedur berikut.

**Untuk mengekspor data RDS for PostgreSQL ke S3**

1. Identifikasi jalur file Amazon S3 yang akan digunakan untuk mengekspor data. Untuk detail tentang proses ini, lihat [Menentukan jalur file Amazon S3 tujuan ekspor](#postgresql-s3-export-file).

1. Berikan izin untuk mengakses bucket Amazon S3.

   Untuk mengekspor data ke file Amazon S3, beri instans DB RDS for PostgreSQL izin untuk mengakses bucket Amazon S3 yang akan digunakan untuk penyimpanan data yang diekspor. Berikut adalah langkah-langkahnya:

   1. Buat kebijakan IAM yang memberikan akses ke bucket Amazon S3 tempat tujuan ekspor.

   1. Buat peran IAM.

   1. Lampirkan kebijakan yang Anda buat ke peran yang Anda buat.

   1. Tambahkan peran IAM ini ke instans DB.

   Untuk detail tentang proses ini, lihat [Menyiapkan akses ke bucket Amazon S3](postgresql-s3-export-access-bucket.md).

1. Identifikasi kueri basis data untuk mendapatkan data. Ekspor data kueri dengan memanggil fungsi `aws_s3.query_export_to_s3`. 

   Setelah menyelesaikan tugas persiapan sebelumnya, gunakan fungsi [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) untuk mengekspor hasil kueri ke Amazon S3. Untuk detail tentang proses ini, lihat [Mengekspor data kueri menggunakan fungsi aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-examples.md).

## Menentukan jalur file Amazon S3 tujuan ekspor
<a name="postgresql-s3-export-file"></a>

Tentukan informasi berikut untuk mengidentifikasi lokasi di Amazon S3 tempat Anda ingin mengekspor data:
+ Nama bucket – *Bucket* adalah kontainer untuk objek atau file Amazon S3.

  Untuk informasi selengkapnya tentang menyimpan data dengan Amazon S3, lihat [Membuat bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) dan [Bekerja dengan objek](https://docs.aws.amazon.com/AmazonS3/latest/userguide/uploading-downloading-objects.html) di *Panduan Pengguna Layanan Penyimpanan Sederhana Amazon*. 
+ Jalur file – Jalur file mengidentifikasi tempat penyimpanan data yang diekspor dalam bucket Amazon S3. Jalur file terdiri atas:
  + Awalan jalur opsional yang mengidentifikasi jalur folder virtual.
  + Awalan file yang mengidentifikasi satu atau beberapa file yang akan disimpan. Ekspor yang lebih besar disimpan dalam beberapa file, masing-masing berukuran maksimum sekitar 6 GB. Nama file tambahan memiliki awalan file yang sama, tetapi dengan penambahan `_partXX`. `XX` mewakili 2, lalu 3, dan seterusnya.

  Misalnya, jalur file dengan folder `exports` dan awalan file `query-1-export` adalah `/exports/query-1-export`.
+ AWS Wilayah (opsional) - AWS Wilayah tempat bucket Amazon S3 berada. 
**catatan**  
Saat ini, AWS Wilayah harus sama dengan wilayah instans yang mengekspor.

  Untuk daftar nama AWS Wilayah dan nilai terkait, lihat[Wilayah, Zona Ketersediaan, dan Zona Lokal](Concepts.RegionsAndAvailabilityZones.md).

Untuk menyimpan informasi file Amazon S3 tentang lokasi penyimpanan file yang diekspor, Anda dapat menggunakan fungsi [aws\$1commons.create\$1s3\$1uri](postgresql-s3-export-functions.md#aws_commons.create_s3_uri) untuk membuat struktur komposit `aws_commons._s3_uri_1` sebagai berikut.

```
psql=> SELECT aws_commons.create_s3_uri(
   'amzn-s3-demo-bucket',
   'sample-filepath',
   'us-west-2'
) AS s3_uri_1 \gset
```

Kemudian, berikan nilai `s3_uri_1` ini sebagai parameter untuk memanggil fungsi [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3). Sebagai contoh, lihat [Mengekspor data kueri menggunakan fungsi aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-examples.md).

# Menyiapkan akses ke bucket Amazon S3
<a name="postgresql-s3-export-access-bucket"></a>

Untuk mengekspor data ke Amazon S3, berikan izin kepada instans DB PostgreSQL Anda untuk mengakses bucket Amazon S3 yang akan dimasuki file. 

Untuk melakukannya, gunakan prosedur berikut.

**Untuk memberi instans DB PostgreSQL akses ke Amazon S3 melalui peran IAM**

1. Buat kebijakan IAM. 

   Kebijakan ini memberikan izin kepada bucket dan objek yang memungkinkan instans DB PostgreSQL Anda mengakses Amazon S3. 

   Sebagai bagian dari pembuatan kebijakan ini, lakukan langkah-langkah berikut:

   1. Sertakan tindakan yang diperlukan berikut dalam kebijakan untuk mengizinkan transfer file dari instans DB PostgreSQL ke bucket Amazon S3: 
      + `s3:PutObject`
      + `s3:AbortMultipartUpload`

   1. Sertakan Amazon Resource Name (ARN) yang mengidentifikasi bucket dan objek Amazon S3 dalam bucket. Format ARN untuk mengakses Amazon S3 adalah: `arn:aws:s3:::amzn-s3-demo-bucket/*`

   Untuk informasi selengkapnya tentang cara membuat kebijakan IAM untuk Amazon RDS for PostgreSQL, lihat [Membuat dan menggunakan kebijakan IAM untuk akses basis data IAM](UsingWithRDS.IAMDBAuth.IAMPolicy.md). Lihat juga [Tutorial: Membuat dan melampirkan kebijakan yang dikelola pelanggan pertama Anda](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_managed-policies.html) di *Panduan Pengguna IAM*.

    AWS CLI Perintah berikut membuat kebijakan IAM bernama `rds-s3-export-policy` dengan opsi ini. Ini memberikan akses ke bucket bernama *amzn-s3-demo-bucket*. 
**Awas**  
Sebaiknya Anda menyiapkan basis data Anda dengan VPC privat yang memiliki kebijakan titik akhir yang dikonfigurasi untuk mengakses bucket tertentu. Untuk informasi selengkapnya, lihat [ Menggunakan kebijakan titik akhir untuk Amazon S3](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-endpoints-s3.html#vpc-endpoints-policies-s3) di Panduan Pengguna Amazon VPC.  
Kami sangat menyarankan Anda agar tidak membuat kebijakan dengan akses semua sumber daya. Akses ini dapat menjadi ancaman bagi data keamanan. Jika Anda membuat kebijakan yang memberi akses `S3:PutObject` ke semua sumber daya menggunakan `"Resource":"*"`, pengguna yang memiliki hak istimewa ekspor dapat mengekspor data ke semua bucket di akun Anda. Selain itu, pengguna dapat mengekspor data ke *bucket yang dapat ditulis secara publik Wilayah AWS Anda*. 

   Setelah Anda membuat kebijakan, catat Amazon Resource Name (ARN) dari kebijakan tersebut. Anda memerlukan ARN ini untuk langkah berikutnya ketika Anda melampirkan kebijakan ke peran IAM. 

   ```
   aws iam create-policy  --policy-name rds-s3-export-policy  --policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Sid": "s3export",
            "Action": [
              "s3:PutObject*",
              "s3:ListBucket",
              "s3:GetObject*",
              "s3:DeleteObject*",
              "s3:GetBucketLocation",
              "s3:AbortMultipartUpload"
            ],
            "Effect": "Allow",
            "Resource": [
              "arn:aws:s3:::amzn-s3-demo-bucket/*"
            ] 
          }
        ] 
      }'
   ```

1. Buat peran IAM. 

   Lakukan langkah ini agar Amazon RDS dapat mengambil peran IAM ini atas nama Anda untuk mengakses bucket Amazon S3. Untuk informasi selengkapnya, lihat [Membuat peran untuk mendelegasikan izin ke pengguna IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html) dalam *Panduan Pengguna IAM*.

   Sebaiknya gunakan kunci konteks kondisi global `[aws:SourceArn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)` dan `[aws:SourceAccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)` dalam kebijakan berbasis sumber daya untuk membatasi izin layanan ke sumber daya tertentu. Ini adalah cara paling efektif untuk melindungi dari [masalah deputi yang membingungkan](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). 

   Jika Anda menggunakan kunci konteks kondisi global dan nilai `aws:SourceArn` berisi ID akun, nilai `aws:SourceAccount` dan akun dalam nilai `aws:SourceArn` harus menggunakan ID akun yang sama saat digunakan dalam pernyataan kebijakan yang sama.
   + Gunakan `aws:SourceArn` jika Anda menginginkan akses lintas layanan untuk satu sumber daya. 
   + Gunakan `aws:SourceAccount` jika Anda ingin mengizinkan sumber daya apa pun di akun tersebut dikaitkan dengan penggunaan lintas layanan.

    Dalam kebijakan, pastikan untuk menggunakan kunci konteks kondisi global `aws:SourceArn` dengan ARN penuh sumber daya. Contoh berikut menunjukkan bagaimana melakukannya dengan menggunakan AWS CLI perintah untuk membuat peran bernama`rds-s3-export-role`.   
**Example**  

   Untuk Linux, macOS, atau Unix:

   ```
   aws iam create-role  \
       --role-name rds-s3-export-role  \
       --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                   "aws:SourceAccount": "111122223333",
                   "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname"
                   }
                }
          }
        ] 
      }'
   ```

   Untuk Windows:

   ```
   aws iam create-role  ^
       --role-name rds-s3-export-role  ^
       --assume-role-policy-document '{
        "Version": "2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Principal": {
               "Service": "rds.amazonaws.com"
             },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                   "aws:SourceAccount": "111122223333",
                   "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname"
                   }
                }
          }
        ] 
      }'
   ```

1. Lampirkan kebijakan IAM yang Anda buat ke peran IAM yang Anda buat.

    AWS CLI Perintah berikut melampirkan kebijakan yang dibuat sebelumnya ke peran bernama `rds-s3-export-role.` Ganti `your-policy-arn` dengan ARN kebijakan yang Anda catat di langkah sebelumnya. 

   ```
   aws iam attach-role-policy  --policy-arn your-policy-arn  --role-name rds-s3-export-role  
   ```

1. Tambahkan peran IAM ke instans DB. Anda melakukannya dengan menggunakan Konsol Manajemen AWS atau AWS CLI, seperti yang dijelaskan berikut.

## Konsol
<a name="collapsible-section-1"></a>

**Untuk menambahkan peran IAM untuk instans DB PostgreSQL menggunakan konsol**

1. Masuk ke Konsol Manajemen AWS dan buka konsol Amazon RDS di [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/).

1. Pilih nama instans DB PostgreSQL untuk menampilkan detailnya.

1. Di tab **Konektivitas & keamanan**, di bagian **Kelola peran IAM**, pilih peran yang akan ditambahkan pada bagian **Tambahkan peran IAM ke instans ini**. 

1. Di bagian **Fitur**, pilih **s3Export**.

1. Pilih **Tambahkan peran**.

## AWS CLI
<a name="collapsible-section-2"></a>

**Untuk menambahkan peran IAM untuk instans DB PostgreSQL menggunakan CLI**
+ Gunakan perintah berikut untuk menambahkan peran ke instans DB PostgreSQL bernama `my-db-instance`. Ganti *`your-role-arn`* dengan ARN peran yang Anda catat pada langkah sebelumnya. Gunakan `s3Export` untuk nilai opsi `--feature-name`.   
**Example**  

  Untuk Linux, macOS, atau Unix:

  ```
  aws rds add-role-to-db-instance \
     --db-instance-identifier my-db-instance \
     --feature-name s3Export \
     --role-arn your-role-arn   \
     --region your-region
  ```

  Untuk Windows:

  ```
  aws rds add-role-to-db-instance ^
     --db-instance-identifier my-db-instance ^
     --feature-name s3Export ^
     --role-arn your-role-arn ^
     --region your-region
  ```

# Mengekspor data kueri menggunakan fungsi aws\$1s3.query\$1export\$1to\$1s3
<a name="postgresql-s3-export-examples"></a>

Ekspor data PostgreSQL Anda ke Amazon S3 dengan memanggil fungsi [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3). 

**Topics**
+ [Prasyarat](#postgresql-s3-export-examples-prerequisites)
+ [Memanggil aws\$1s3.query\$1export\$1to\$1s3](#postgresql-s3-export-examples-basic)
+ [Mengekspor ke file CSV yang menggunakan pembatas kustom](#postgresql-s3-export-examples-custom-delimiter)
+ [Mengekspor ke file biner dengan pengodean](#postgresql-s3-export-examples-encoded)

## Prasyarat
<a name="postgresql-s3-export-examples-prerequisites"></a>

Sebelum menggunakan fungsi `aws_s3.query_export_to_s3`, pastikan untuk melengkapi prasyarat berikut:
+ Instal ekstensi PostgreSQL yang diperlukan seperti yang dijelaskan di [Ikhtisar ekspor data ke Amazon S3](postgresql-s3-export.md#postgresql-s3-export-overview).
+ Tentukan tempat untuk mengekspor data Anda ke Amazon S3 seperti yang dijelaskan di [Menentukan jalur file Amazon S3 tujuan ekspor](postgresql-s3-export.md#postgresql-s3-export-file).
+ Pastikan bahwa instans DB memiliki akses ekspor ke Amazon S3 seperti yang dijelaskan di [Menyiapkan akses ke bucket Amazon S3](postgresql-s3-export-access-bucket.md).

Contoh berikut menggunakan tabel basis data yang disebut `sample_table`. Contoh ini mengekspor data ke dalam bucket bernama *amzn-s3-demo-bucket*. Contoh tabel dan data dibuat dengan pernyataan SQL berikut di psql.

```
psql=> CREATE TABLE sample_table (bid bigint PRIMARY KEY, name varchar(80));
psql=> INSERT INTO sample_table (bid,name) VALUES (1, 'Monday'), (2,'Tuesday'), (3, 'Wednesday');
```

## Memanggil aws\$1s3.query\$1export\$1to\$1s3
<a name="postgresql-s3-export-examples-basic"></a>

Berikut ini adalah cara-cara dasar untuk memanggil fungsi [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3). 

Contoh ini menggunakan variabel `s3_uri_1` untuk mengidentifikasi struktur berisi informasi yang mengidentifikasi file Amazon S3. Gunakan fungsi [aws\$1commons.create\$1s3\$1uri](postgresql-s3-export-functions.md#aws_commons.create_s3_uri) untuk membuat struktur.

```
psql=> SELECT aws_commons.create_s3_uri(
   'amzn-s3-demo-bucket',
   'sample-filepath',
   'us-west-2'
) AS s3_uri_1 \gset
```

Meskipun parameter bervariasi untuk dua panggilan fungsi `aws_s3.query_export_to_s3` berikut, hasilnya sama untuk contoh ini. Semua baris dari tabel `sample_table` diekspor ke dalam bucket yang disebut *amzn-s3-demo-bucket*. 

```
psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1');

psql=> SELECT * FROM aws_s3.query_export_to_s3('SELECT * FROM sample_table', :'s3_uri_1', options :='format text');
```

Parameternya dijelaskan sebagai berikut:
+ `'SELECT * FROM sample_table'` – Parameter pertama adalah string teks wajib yang berisi kueri SQL. Mesin PostgreSQL menjalankan kueri ini. Hasil kueri disalin ke bucket S3 yang diidentifikasi dalam parameter lain.
+ `:'s3_uri_1'` – Parameter ini adalah struktur yang mengidentifikasi file Amazon S3. Contoh ini menggunakan variabel untuk mengidentifikasi struktur yang dibuat sebelumnya. Anda dapat membuat struktur dengan menyertakan baris panggilan fungsi `aws_commons.create_s3_uri` sebaris dalam panggilan fungsi `aws_s3.query_export_to_s3` sebagai berikut.

  ```
  SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 
     aws_commons.create_s3_uri('amzn-s3-demo-bucket', 'sample-filepath', 'us-west-2') 
  );
  ```
+ `options :='format text'` – Parameter `options` adalah string teks opsional yang berisi argumen `COPY` PostgreSQL. Proses penyalinan menggunakan argumen dan format perintah [PostgreSQL COPY](https://www.postgresql.org/docs/current/sql-copy.html). 

Jika file yang ditentukan tidak ada dalam bucket Amazon S3, file tersebut akan dibuat. Jika file sudah ada, file tersebut akan ditimpa. Sintaks untuk mengakses data yang diekspor di Amazon S3 adalah sebagai berikut.

```
s3-region://bucket-name[/path-prefix]/file-prefix
```

Ekspor yang lebih besar disimpan dalam beberapa file, masing-masing berukuran maksimum sekitar 6 GB. Nama file tambahan memiliki awalan file yang sama, tetapi dengan penambahan `_partXX`. `XX` mewakili 2, lalu 3, dan seterusnya. Sebagai contoh, misalkan Anda menentukan jalur tempat Anda menyimpan file data sebagai berikut.

```
s3-us-west-2://amzn-s3-demo-bucket/my-prefix
```

Jika ekspor harus membuat tiga file data, bucket Amazon S3 berisi file data berikut.

```
s3-us-west-2://amzn-s3-demo-bucket/my-prefix
s3-us-west-2://amzn-s3-demo-bucket/my-prefix_part2
s3-us-west-2://amzn-s3-demo-bucket/my-prefix_part3
```

Untuk referensi selengkapnya tentang fungsi ini dan cara lain untuk memanggilnya, lihat [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3). Untuk informasi selengkapnya tentang cara mengakses file di Amazon S3, buka [Melihat objek](https://docs.aws.amazon.com/AmazonS3/latest/userguide/OpeningAnObject.html) dalam *Panduan Pengguna Amazon Simple Storage Service*. 

## Mengekspor ke file CSV yang menggunakan pembatas kustom
<a name="postgresql-s3-export-examples-custom-delimiter"></a>

Contoh berikut menunjukkan cara memanggil fungsi [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) untuk mengekspor data ke file yang menggunakan pembatas kustom. Contoh ini menggunakan argumen perintah [PostgreSQL COPY](https://www.postgresql.org/docs/current/sql-copy.html) untuk menetapkan format nilai yang dipisahkan koma (CSV) dan pembatas titik dua (:).

```
SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format csv, delimiter $$:$$');
```

## Mengekspor ke file biner dengan pengodean
<a name="postgresql-s3-export-examples-encoded"></a>

Contoh berikut menunjukkan cara memanggil fungsi [aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-functions.md#aws_s3.export_query_to_s3) untuk mengekspor data ke file biner yang memiliki pengodean Windows-1253.

```
SELECT * from aws_s3.query_export_to_s3('select * from basic_test', :'s3_uri_1', options :='format binary, encoding WIN1253');
```

# Referensi fungsi
<a name="postgresql-s3-export-functions"></a>

**Topics**
+ [aws\$1s3.query\$1export\$1to\$1s3](#aws_s3.export_query_to_s3)
+ [aws\$1commons.create\$1s3\$1uri](#aws_commons.create_s3_uri)

## aws\$1s3.query\$1export\$1to\$1s3
<a name="aws_s3.export_query_to_s3"></a>

Mengekspor hasil kueri PostgreSQL ke bucket Amazon S3. Ekstensi `aws_s3` memberikan fungsi `aws_s3.query_export_to_s3`. 

Dua parameter yang dibutuhkan adalah `query` dan `s3_info`. Parameter ini menentukan kueri yang akan diekspor dan mengidentifikasi bucket Amazon S3 tempat tujuan ekspor. Parameter opsional yang disebut `options` disediakan untuk menentukan berbagai parameter ekspor. Sebagai contoh penggunaan fungsi `aws_s3.query_export_to_s3`, lihat [Mengekspor data kueri menggunakan fungsi aws\$1s3.query\$1export\$1to\$1s3](postgresql-s3-export-examples.md).

**Sintaksis**

```
aws_s3.query_export_to_s3(
    query text,    
    s3_info aws_commons._s3_uri_1,    
    options text,
    kms_key text
)
```Parameter input

*query*  
String teks yang diperlukan yang berisi kueri SQL yang dijalankan mesin PostgreSQL. Hasil kueri ini disalin ke bucket S3 yang diidentifikasi dalam parameter `s3_info`.

*s3\$1info*  
Jenis komposit `aws_commons._s3_uri_1` yang berisi informasi tentang objek S3 berikut:  
+ `bucket` – Nama bucket Amazon S3 yang akan diisi file.
+ `file_path` – Nama dan jalur file Amazon S3.
+ `region`— AWS Wilayah tempat ember berada. Untuk daftar nama AWS Wilayah dan nilai terkait, lihat[Wilayah, Zona Ketersediaan, dan Zona Lokal](Concepts.RegionsAndAvailabilityZones.md). 

  Saat ini, nilai ini harus AWS Wilayah yang sama dengan instans yang mengekspor. Defaultnya adalah AWS Wilayah instance yang mengekspor. 
Untuk membuat struktur komposit `aws_commons._s3_uri_1`, lihat fungsi [aws\$1commons.create\$1s3\$1uri](#aws_commons.create_s3_uri).

*options*  
String teks opsional yang berisi argumen untuk perintah `COPY` PostgreSQL. Argumen ini menentukan cara menyalin data saat diekspor. Untuk detail selengkapnya, lihat [Dokumentasi PostgreSQL COPY](https://www.postgresql.org/docs/current/sql-copy.html).

*teks kms\$1key*  
String teks opsional yang berisi kunci KMS yang dikelola pelanggan dari bucket S3 untuk mengekspor data.

### Parameter input alternatif
<a name="aws_s3.export_query_to_s3-alternate-parameters"></a>

Untuk memudahkan pengujian, Anda dapat menggunakan serangkaian parameter yang diperluas, bukan parameter `s3_info`. Berikut ini adalah variasi sintaks tambahan untuk fungsi `aws_s3.query_export_to_s3`. 

Alih-alih menggunakan parameter `s3_info` untuk mengidentifikasi file Amazon S3, gunakan kombinasi parameter `bucket`, `file_path`, dan `region`.

```
aws_s3.query_export_to_s3(
    query text,    
    bucket text,    
    file_path text,    
    region text,    
    options text,
    kms_key text
)
```

*query*  
String teks yang diperlukan yang berisi kueri SQL yang dijalankan mesin PostgreSQL. Hasil kueri ini disalin ke bucket S3 yang diidentifikasi dalam parameter `s3_info`.

*bucket*  
String teks yang diperlukan yang berisi nama bucket Amazon S3 yang berisi file.

*file\$1path*  
String teks yang diperlukan yang berisi nama file Amazon S3 beserta jalurnya.

*region*  
String teks opsional yang berisi AWS Wilayah tempat bucket berada. Untuk daftar nama AWS Wilayah dan nilai terkait, lihat[Wilayah, Zona Ketersediaan, dan Zona Lokal](Concepts.RegionsAndAvailabilityZones.md).  
Saat ini, nilai ini harus AWS Wilayah yang sama dengan instans yang mengekspor. Defaultnya adalah AWS Wilayah instance yang mengekspor. 

*options*  
String teks opsional yang berisi argumen untuk perintah `COPY` PostgreSQL. Argumen ini menentukan cara menyalin data saat diekspor. Untuk detail selengkapnya, lihat [Dokumentasi PostgreSQL COPY](https://www.postgresql.org/docs/current/sql-copy.html).

*teks kms\$1key*  
String teks opsional yang berisi kunci KMS yang dikelola pelanggan dari bucket S3 untuk mengekspor data.

### Parameter output
<a name="aws_s3.export_query_to_s3-output-parameters"></a>

```
aws_s3.query_export_to_s3(
    OUT rows_uploaded bigint,
    OUT files_uploaded bigint,
    OUT bytes_uploaded bigint
)
```

*rows\$1uploaded*  
Jumlah baris tabel yang berhasil diunggah ke Amazon S3 untuk kueri tertentu.

*files\$1uploaded*  
Jumlah file yang diunggah ke Amazon S3. File dibuat dalam ukuran kira-kira 6 GB. Setiap file tambahan yang dibuat memiliki `_partXX` yang ditambahkan pada namanya. `XX` mewakili 2, kemudian 3, dan seterusnya sesuai kebutuhan.

*bytes\$1uploaded*  
Jumlah total byte yang diunggah ke Amazon S3.

### Contoh
<a name="aws_s3.export_query_to_s3-examples"></a>

```
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath');
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath','us-west-2');
psql=> SELECT * from aws_s3.query_export_to_s3('select * from sample_table', 'amzn-s3-demo-bucket', 'sample-filepath','us-west-2','format text');
```

## aws\$1commons.create\$1s3\$1uri
<a name="aws_commons.create_s3_uri"></a>

Membuat struktur `aws_commons._s3_uri_1` untuk menyimpan informasi file Amazon S3. Gunakan hasil dari fungsi `aws_commons.create_s3_uri` dalam parameter `s3_info` dari fungsi [aws\$1s3.query\$1export\$1to\$1s3](#aws_s3.export_query_to_s3). Untuk contoh penggunaan fungsi `aws_commons.create_s3_uri`, lihat [Menentukan jalur file Amazon S3 tujuan ekspor](postgresql-s3-export.md#postgresql-s3-export-file).

**Sintaksis**

```
aws_commons.create_s3_uri(
   bucket text,
   file_path text,
   region text
)
```Parameter input

*bucket*  
String teks yang diperlukan yang berisi nama bucket Amazon S3 untuk file tersebut.

*file\$1path*  
String teks yang diperlukan yang berisi nama file Amazon S3 beserta jalurnya.

*region*  
String teks yang diperlukan yang berisi AWS Wilayah tempat file tersebut berada. Untuk daftar nama AWS Wilayah dan nilai terkait, lihat[Wilayah, Zona Ketersediaan, dan Zona Lokal](Concepts.RegionsAndAvailabilityZones.md).

# Memecahkan masalah akses ke Amazon S3
<a name="postgresql-s3-export-troubleshoot"></a>

Jika Anda mengalami masalah koneksi saat mencoba mengekspor data ke Amazon S3, pertama pastikan aturan akses keluar untuk grup keamanan VPC yang terkait dengan instans DB Anda mengizinkan konektivitas jaringan. Secara khusus, grup keamanan harus memiliki aturan yang memungkinkan instans DB mengirim lalu lintas TCP ke port 443 dan ke IPv4 alamat apa pun (0.0.0.0/0). Untuk informasi selengkapnya, lihat [Memberikan akses ke instans DB di VPC Anda dengan membuat grup keamanan](CHAP_SettingUp.md#CHAP_SettingUp.SecurityGroup).

Lihat juga rekomendasi berikut:
+ [Memecahkan masalah identitas dan akses Amazon RDS](security_iam_troubleshoot.md)
+ [Memecahkan Masalah Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/troubleshooting.html) di *Panduan Pengguna Amazon Simple Storage Service*
+ [Memecahkan Masalah Amazon S3 dan IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_iam-s3.html) di *Panduan Pengguna IAM*