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
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
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.
Topik ini menjelaskan cara memulai Tabel Amazon S3 dan Redshift dan mengakses objek Tabel S3 menggunakan Amazon Redshift.
Prasyarat
Sebelum menanyakan Tabel S3 dari Amazon Redshift, Anda harus mengintegrasikan Tabel S3 dengan. AWS Glue Data Catalog Untuk petunjuk, lihat Mengintegrasikan Tabel Amazon S3 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 untuk detail.
Kueri Tabel S3 dari Amazon Redshift
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
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:
Buka konsol IAM di https://console.aws.amazon.com/iam/
. Di panel navigasi, pilih Kebijakan.
Pilih Buat kebijakan.
Pilih tab JSON.
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/*" ] } ] }Pilih Tinjau kebijakan.
Pada halaman Kebijakan peninjauan, masukkan
GlueCatalogS3Tables_PolicyNama. Secara opsional, masukkan deskripsi. Tinjau ringkasan kebijakan, lalu pilih Buat kebijakan.
Untuk membuat peran IAM untuk Amazon Redshift:
Buka konsol IAM
. Di panel navigasi, pilih Peran.
Pilih Buat peran.
Pilih AWS layanan sebagai entitas tepercaya, lalu pilih Redshift sebagai kasus penggunaan.
Di bawah Kasus penggunaan untuk AWS layanan lain, pilih Redshift - Dapat Disesuaikan, lalu pilih Berikutnya.
Pada halaman Tambahkan izin, lampirkan
GlueCatalogS3Tables_Policykebijakan yang Anda buat di atas. Pilih Berikutnya.Untuk nama Peran, masukkan nama untuk peran Anda, misalnya
RedshiftS3TablesRole.Tinjau informasi, lalu pilih Buat peran.
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
Kaitkan peran IAM yang Anda konfigurasikan di Langkah 1 dengan klaster Amazon Redshift Anda.
Menggunakan Konsol AWS Manajemen:
Masuk ke Konsol AWS Manajemen dan buka konsol Amazon Redshift di. https://console.aws.amazon.com/redshiftv2/
Pada menu navigasi, pilih Cluster, lalu pilih cluster yang ingin Anda perbarui.
Untuk Tindakan, pilih Kelola peran IAM untuk menampilkan daftar peran IAM saat ini yang terkait dengan cluster.
Pada halaman Kelola peran IAM, pilih peran IAM yang akan ditambahkan, lalu pilih Tambahkan peran IAM.
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 Pergeseran Merah Amazon.
Langkah 3: Kueri Tabel S3 dari Amazon Redshift
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.
s3tablescatalogDatabase: 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 tabeltransactions, 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:
Buka AWS Glue konsol di https://console.aws.amazon.com/glue/
. Di panel navigasi, pilih Basis data.
Pilih Buat, lalu pilih Tautan sumber daya.
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>.
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
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 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
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 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
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:
Connect ke klaster Redshift Anda menggunakan identitas IAM dengan izin berikut:
redshift:GetClusterCredentialsWithIAM(untuk cluster yang disediakan) atauredshift-serverless:GetCredentials(untuk Tanpa Server)AmazonS3ReadOnlyAccessAWSGlueConsoleFullAccessIzin Tabel S3 (seperti yang didefinisikan pada Langkah 1)
Saat Anda terhubung dengan identitas IAM, Amazon Redshift secara otomatis membuat pengguna database yang diawali
IAM:dengan (untuk pengguna)IAMR:atau (untuk peran).Sebagai administrator klaster, berikan izin pengguna federasi untuk mengakses skema eksternal. Ganti
my_userdengan 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 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;