

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat [posting blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

# Kueri Tabel Amazon S3 dari Amazon Redshift
<a name="querying-s3Tables"></a>

Amazon Redshift terintegrasi dengan bucket tabel Amazon S3, memungkinkan Anda mengakses sumber daya tabel S3 menggunakan Amazon Redshift. Apakah Anda baru memulai atau mengelola ribuan tabel di lingkungan Gunung Es Anda, bucket tabel menyederhanakan pengelolaan data lake pada skala apa pun. Untuk informasi selengkapnya, lihat [Bucket tabel](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-buckets.html).

Topik ini menjelaskan cara memulai Tabel Amazon S3 dan Redshift dan mengakses objek Tabel S3 menggunakan Amazon Redshift.

## Prasyarat
<a name="querying-s3Tables-prerequisites"></a>

Sebelum menanyakan Tabel S3 dari Amazon Redshift, Anda harus mengintegrasikan Tabel S3 dengan. AWS Glue Data Catalog Untuk petunjuk, lihat [Mengintegrasikan Tabel Amazon S3](https://docs.aws.amazon.com/glue/latest/dg/glue-federation-s3tables.html) dengan. AWS Glue Data Catalog

Setelah Tabel S3 terintegrasi dengan AWS Glue Data Catalog, prinsipal IAM dengan Tabel S3 yang diperlukan dan izin AWS Glue IAM dapat menemukan Tabel S3 melalui. AWS Glue Data Catalog

**catatan**  
Metode 3 (Auto-mounted awsdatacatalog) memiliki prasyarat tambahan. Lihat [Metode 3: Awsdatacatalog yang dipasang secara otomatis](#querying-s3Tables-method3) untuk detail.

## Kueri Tabel S3 dari Amazon Redshift
<a name="querying-s3Tables-steps"></a>

Untuk memulai kueri Tabel S3, ikuti langkah-langkah ini:
+ Langkah 1: Buat peran IAM untuk Amazon Redshift
+ Langkah 2: Lampirkan peran IAM ke cluster Amazon Redshift Anda
+ Langkah 3: Kueri Tabel S3 dari Amazon Redshift

### Langkah 1: Buat peran IAM untuk Amazon Redshift
<a name="querying-s3Tables-step1"></a>

Cluster Anda memerlukan otorisasi untuk mengakses katalog Tabel S3 eksternal di. AWS Glue Untuk memberikan otorisasi tersebut, Amazon Redshift menggunakan peran IAM yang dilampirkan ke cluster Anda. Buat peran IAM dengan izin kebijakan berikut.

**catatan**  
Dalam kebijakan dan contoh di bawah ini, ganti `us-west-2` dengan AWS Wilayah Anda dan `111122223333` dengan ID AWS akun Anda.

**Untuk membuat kebijakan:**

1. Buka konsol IAM di [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Kebijakan**.

1. Pilih **Buat kebijakan**.

1. Pilih tab **JSON**.

1. Tempel di dokumen kebijakan JSON berikut:

   ```
   {
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Sid": "GlueDataCatalogPermissions",
         "Effect": "Allow",
         "Action": [
           "glue:GetCatalog",
           "glue:GetDatabase",
           "glue:GetTable",
           "glue:GetTables",
           "glue:UpdateTable",
           "glue:DeleteTable"
         ],
         "Resource": [
           "arn:aws:glue:us-west-2:111122223333:catalog",
           "arn:aws:glue:us-west-2:111122223333:catalog/s3tablescatalog",
           "arn:aws:glue:us-west-2:111122223333:catalog/s3tablescatalog/*",
           "arn:aws:glue:us-west-2:111122223333:database/s3tablescatalog/*/*",
           "arn:aws:glue:us-west-2:111122223333:table/s3tablescatalog/*/*/*",
           "arn:aws:glue:us-west-2:111122223333:database/*",
           "arn:aws:glue:us-west-2:111122223333:table/*/*"
         ]
       },
       {
         "Sid": "S3TablesDataAccessPermissions",
         "Effect": "Allow",
         "Action": [
           "s3tables:GetTableBucket",
           "s3tables:GetNamespace",
           "s3tables:GetTable",
           "s3tables:GetTableMetadataLocation",
           "s3tables:GetTableData",
           "s3tables:ListTableBuckets",
           "s3tables:CreateTable",
           "s3tables:PutTableData",
           "s3tables:UpdateTableMetadataLocation",
           "s3tables:ListNamespaces",
           "s3tables:ListTables",
           "s3tables:DeleteTable"
         ],
         "Resource": [
           "arn:aws:s3tables:us-west-2:111122223333:bucket/*",
           "arn:aws:s3tables:us-west-2:111122223333:bucket/*/table/*"
         ]
       }
     ]
   }
   ```

1. Pilih **Tinjau kebijakan**.

1. Pada halaman **Kebijakan peninjauan**, masukkan `GlueCatalogS3Tables_Policy` **Nama**. Secara opsional, masukkan deskripsi. Tinjau ringkasan kebijakan, lalu pilih **Buat kebijakan**.

**Untuk membuat peran IAM untuk Amazon Redshift:**

1. Buka [konsol IAM](https://console.aws.amazon.com/iam/).

1. Di panel navigasi, pilih **Peran**.

1. Pilih **Buat peran**.

1. Pilih **AWS layanan** sebagai entitas tepercaya, lalu pilih **Redshift** sebagai kasus penggunaan.

1. **Di bawah **Kasus penggunaan untuk AWS layanan lain**, pilih **Redshift - Dapat Disesuaikan, lalu pilih Berikutnya**.**

1. Pada halaman **Tambahkan izin**, lampirkan `GlueCatalogS3Tables_Policy` kebijakan yang Anda buat di atas. Pilih **Berikutnya**.

1. Untuk **nama Peran**, masukkan nama untuk peran Anda, misalnya`RedshiftS3TablesRole`.

1. Tinjau informasi, lalu pilih **Buat peran**.

1. Di panel navigasi, pilih **Peran**. Pilih nama peran baru Anda untuk melihat ringkasan, lalu salin **ARN Peran** ke clipboard Anda. Anda akan menggunakan ARN ini saat membuat skema eksternal untuk ruang nama Tabel S3.

**catatan**  
Cakupan ke sumber daya tertentu dengan mengganti wildcard dengan Amazon Resource Names (ARNs) yang tepat.

### Langkah 2: Lampirkan peran IAM ke cluster Amazon Redshift Anda
<a name="querying-s3Tables-step2"></a>

Kaitkan peran IAM yang Anda konfigurasikan di Langkah 1 dengan klaster Amazon Redshift Anda.

**Menggunakan Konsol AWS Manajemen:**

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

1. Pada menu navigasi, pilih **Cluster**, lalu pilih cluster yang ingin Anda perbarui.

1. Untuk **Tindakan**, pilih **Kelola peran IAM** untuk menampilkan daftar peran IAM saat ini yang terkait dengan cluster.

1. Pada halaman **Kelola peran IAM**, pilih peran IAM yang akan ditambahkan, lalu pilih **Tambahkan peran IAM**.

1. Pilih **Selesai** untuk menyimpan perubahan Anda.

**Menggunakan AWS CLI:**

Jalankan perintah berikut untuk mengaitkan peran IAM dengan cluster atau namespace yang ada. Ganti `my-redshift-cluster` atau `my-redshift-namespace` dengan pengenal klaster atau namespace Anda dan `111122223333` dengan ID akun Anda AWS .

```
aws redshift modify-cluster-iam-roles \
    --cluster-identifier my-redshift-cluster \
    --add-iam-roles arn:aws:iam::111122223333:role/RedshiftS3TablesRole

-- for serverless
aws redshift-serverless update-namespace \
    --namespace-name my-redshift-namespace \
    --iam-roles "arn:aws:iam::111122223333:role/RedshiftS3TablesRole"
```

Untuk informasi selengkapnya, lihat [Mengaitkan peran IAM dengan klaster di Panduan Manajemen](https://docs.aws.amazon.com/redshift/latest/mgmt/copy-unload-iam-role.html) Pergeseran Merah *Amazon*.

### Langkah 3: Kueri Tabel S3 dari Amazon Redshift
<a name="querying-s3Tables-step3"></a>

Saat Anda mengintegrasikan Tabel S3 dengan AWS Glue Data Catalog, layanan akan membuat struktur katalog gabungan yang memetakan sumber daya Tabel S3 ke AWS Glue objek katalog:
+ Bucket meja S3 menjadi **katalog** di. AWS Glue Data Catalog
+ **Namespace S3 menjadi database.AWS Glue **
+ Tabel S3 menjadi **objek AWS Glue tabel**.

Integrasi menciptakan hierarki berikut:
+ **Katalog federasi:** `s3tablescatalog` (dibuat secara otomatis)
+ **Katalog anak:** Setiap ember meja S3 menjadi katalog anak di bawah. `s3tablescatalog`
+ **Database:** Setiap namespace S3 dalam keranjang tabel menjadi database.
+ **Tabel:** Setiap tabel S3 dalam namespace menjadi tabel.

Misalnya, jika Anda memiliki bucket tabel S3 bernama `analytics-bucket` dengan namespace `sales` yang berisi tabel`transactions`, jalur lengkap di dalamnya AWS Glue Data Catalog adalah:. `s3tablescatalog/analytics-bucket/sales/transactions`

**Buat tautan sumber daya**

Sebelum menggunakan salah satu dari tiga metode kueri di bawah ini, Anda harus membuat tautan sumber daya di AWS Glue Data Catalog. Tautan sumber daya memungkinkan Amazon Redshift untuk mereferensikan database Tabel S3 melalui katalog standar.

*Menggunakan AWS Glue konsol:*

1. Buka AWS Glue konsol di [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/).

1. Di panel navigasi, pilih **Basis data**.

1. Pilih **Buat**, lalu pilih **Tautan sumber daya**.

1. Pada halaman **tautan Buat sumber daya**, berikan informasi berikut:
   + **Nama tautan sumber daya:** Masukkan nama untuk tautan sumber daya (misalnya,`sales_resource_link`).
   + **Database bersama:** Masukkan jalur database Tabel S3 (misalnya,`s3tablescatalog/analytics-bucket/sales`).
   + **Pemilik database bersama:** Masukkan ID AWS akun Anda.
   + **ID katalog database bersama:** Masukkan ID katalog dalam format`<account-id>:s3tablescatalog/<bucket-name>`.

1. Pilih **Buat**.

*Menggunakan AWS CLI:*

```
aws glue create-database \
  --region us-west-2 \
  --cli-input-json '{
        "CatalogId": "111122223333",
        "DatabaseInput": {
            "Name": "sales_resource_link",
            "TargetDatabase": {
                "CatalogId": "111122223333:s3tablescatalog/analytics-bucket",
                "DatabaseName": "sales"
            }
        }
  }'
```

Perintah ini membuat tautan sumber daya bernama `sales_resource_link` dalam Katalog AWS Glue Data default Anda yang menunjuk ke `sales` database di bucket `analytics-bucket` tabel S3.

Setelah tautan sumber daya dibuat, Amazon Redshift menyediakan tiga metode untuk menanyakan Tabel S3. Pilih metode yang paling sesuai dengan kasus penggunaan Anda.

**catatan**  
Untuk membuat tautan sumber daya di tingkat database, Administrator Redshift harus memiliki `AWS Glue:CreateDatabase` izin pada katalog default dan database yang sedang dibuat.

#### Metode 1: BUAT SKEMA EKSTERNAL
<a name="querying-s3Tables-method1"></a>

Gunakan `CREATE EXTERNAL SCHEMA` untuk membuat skema eksternal yang mereferensikan database Tabel S3 Anda. Metode ini memberikan kontrol eksplisit atas penamaan skema dan konfigurasi.

Untuk detail sintaks lengkap, lihat [MEMBUAT SKEMA EKSTERNAL di Panduan](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html) Pengembang *Database Amazon Redshift*.

**Contoh**

Gunakan nama database dan ID katalog dari Langkah 3. Ganti `111122223333` dengan ID AWS akun Anda.

```
CREATE EXTERNAL SCHEMA s3tables_schema
FROM DATA CATALOG DATABASE 'sales_resource_link'
IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftS3TablesRole'
REGION 'us-west-2'
CATALOG_ID '111122223333';

SELECT * FROM s3tables_schema.transactions;
```

#### Metode 2: BUAT DATABASE DARI ARN
<a name="querying-s3Tables-method2"></a>

Gunakan `CREATE DATABASE` dengan `FROM ARN` klausa untuk membuat database federasi yang secara langsung mereferensikan tautan AWS Glue sumber daya Anda. Metode ini secara otomatis memetakan AWS Glue database ke database Redshift.

Untuk detail sintaks lengkap, lihat [MEMBUAT DATABASE](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html) di Panduan Pengembang *Database Amazon Redshift*.

**Contoh**

Ganti `111122223333` dengan ID AWS akun Anda.

```
CREATE DATABASE s3tables_db
FROM ARN 'arn:aws:glue:us-west-2:111122223333:database/sales_resource_link'
WITH DATA CATALOG SCHEMA analytics_schema
IAM_ROLE 'arn:aws:iam::111122223333:role/RedshiftS3TablesRole';

SELECT * FROM s3tables_db.analytics_schema.transactions;
```

#### Metode 3: Awsdatacatalog yang dipasang secara otomatis
<a name="querying-s3Tables-method3"></a>

Amazon Redshift dapat secara otomatis memasang AWS Glue Data Catalog database, termasuk tautan sumber daya Tabel S3, melalui database. `awsdatacatalog` Metode ini memerlukan akses federasi ke Spectrum (FAS) untuk diaktifkan di cluster Anda.

**Prasyarat**

Untuk menggunakan `awsdatacatalog` database yang dipasang secara otomatis, Anda harus mengaktifkan akses federasi ke Spectrum. Hal ini memungkinkan Amazon Redshift untuk menggunakan kredenal identitas federasi untuk mengakses AWS Glue Data Catalog dan sumber data eksternal.

Untuk mengaktifkan akses federasi ke Spectrum:

1. Connect ke klaster Redshift Anda menggunakan identitas IAM dengan izin berikut:
   + `redshift:GetClusterCredentialsWithIAM`(untuk cluster yang disediakan) atau `redshift-serverless:GetCredentials` (untuk Tanpa Server)
   + `AmazonS3ReadOnlyAccess`
   + `AWSGlueConsoleFullAccess`
   + Izin Tabel S3 (seperti yang didefinisikan pada Langkah 1)

1. Saat Anda terhubung dengan identitas IAM, Amazon Redshift secara otomatis membuat pengguna database yang diawali `IAM:` dengan (untuk pengguna) `IAMR:` atau (untuk peran).

1. Sebagai administrator klaster, berikan izin pengguna federasi untuk mengakses skema eksternal. Ganti `my_user` dengan peran IAM atau nama pengguna Anda:

   ```
   GRANT ALL ON SCHEMA awsdatacatalog TO "IAMR:my_user";
   ```

Untuk petunjuk mendetail tentang pengaturan akses federasi, lihat [Menggunakan identitas federasi untuk mengelola akses Amazon Redshift ke sumber daya lokal dan tabel eksternal Amazon Redshift Spectrum di Panduan Manajemen Pergeseran Merah](https://docs.aws.amazon.com/redshift/latest/mgmt/authorization-fas-spectrum.html) *Amazon*.

**Tabel Kueri S3**

Setelah akses federasi dikonfigurasi, verifikasi skema yang dipasang dan kueri Tabel S3 Anda.

Verifikasi skema yang dipasang:

```
SHOW SCHEMAS FROM DATABASE awsdatacatalog;
```

Kueri Tabel S3 menggunakan nama tautan sumber daya dari Langkah 3:

```
SELECT * FROM awsdatacatalog.sales_resource_link.transactions;
```