BUAT SKEMA EKSTERNAL - Amazon Redshift

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

BUAT SKEMA EKSTERNAL

Membuat skema eksternal baru dalam database saat ini. Anda dapat menggunakan skema eksternal ini untuk terhubung ke Amazon RDS for PostgreSQL atau database Edisi yang kompatibel dengan Amazon Aurora PostgreSQL. Anda juga dapat membuat skema eksternal yang mereferensikan database dalam katalog data eksternal seperti AWS Glue, Athena, atau database di metastore Apache Hive, seperti Amazon EMR.

Pemilik skema ini adalah penerbit perintah CREATE EXTERNAL SCHEMA. Untuk mentransfer kepemilikan skema eksternal, gunakan ALTER SCHEMA untuk mengubah pemilik. Untuk memberikan akses ke skema ke pengguna lain atau grup pengguna, gunakan HIBAH perintah.

Anda tidak dapat menggunakan perintah GRANT atau REVOKE untuk izin pada tabel eksternal. Sebagai gantinya, berikan atau cabut izin pada skema eksternal.

catatan

Jika saat ini Anda memiliki tabel eksternal Redshift Spectrum di katalog data Amazon Athena, Anda dapat memigrasikan katalog data Athena ke katalog data. AWS Glue Data Catalog Untuk menggunakan Katalog AWS Glue Data dengan Redshift Spectrum, Anda mungkin perlu mengubah kebijakan AWS Identity and Access Management (IAM). Untuk informasi selengkapnya, lihat Memutakhirkan ke Katalog AWS Glue Data di Panduan Pengguna Athena.

Untuk melihat detail skema eksternal, kueri tampilan SVV_EXTERNAL_SCHEMAS sistem.

Sintaks

Sintaks berikut menjelaskan perintah CREATE EXTERNAL SCHEMA yang digunakan untuk referensi data menggunakan katalog data eksternal. Untuk informasi selengkapnya, lihat Menanyakan data eksternal menggunakan Amazon Redshift Spectrum.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] local_schema_name
FROM { [ DATA CATALOG ] | HIVE METASTORE | POSTGRES | MYSQL | KINESIS | MSK | REDSHIFT }
[ DATABASE 'database_name' ]
[ SCHEMA 'schema_name' ]
[ REGION 'aws-region' ]
[ URI 'hive_metastore_uri' [ PORT port_number ] ]
IAM_ROLE { default | 'SESSION' | 'arn:aws:iam::<Akun AWS-id>:role/<role-name>' }
[ SECRET_ARN 'ssm-secret-arn' ]
[ AUTHENTICATION { none | iam } ]
[ CLUSTER_ARN 'arn:aws:kafka:<region>:<Akun AWS-id>:cluster/msk/<cluster uuid>' ]
[ CATALOG_ROLE { 'SESSION' | 'catalog-role-arn-string' } ]
[ CREATE EXTERNAL DATABASE IF NOT EXISTS ]
[ CATALOG_ID 'Amazon Web Services account ID containing Glue or Lake Formation database' ]

Sintaks berikut menjelaskan perintah CREATE EXTERNAL SCHEMA yang digunakan untuk referensi data menggunakan query federasi untuk RDS POSTGRES atau Aurora PostgreSQL. Anda juga dapat membuat skema eksternal yang mereferensikan sumber streaming, seperti Kinesis Data Streams. Untuk informasi selengkapnya, lihat Menanyakan data dengan kueri gabungan di Amazon Redshift.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] local_schema_name
FROM POSTGRES
DATABASE 'federated_database_name' [SCHEMA 'schema_name']
URI 'hostname' [ PORT port_number ]
IAM_ROLE { default | 'arn:aws:iam::<Akun AWS-id>:role/<role-name>' }
SECRET_ARN 'ssm-secret-arn'

Sintaks berikut menjelaskan perintah CREATE EXTERNAL SCHEMA yang digunakan untuk referensi data menggunakan query federasi untuk RDS MySQL atau Aurora MySQL. Untuk informasi selengkapnya, lihat Menanyakan data dengan kueri gabungan di Amazon Redshift.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] local_schema_name
FROM MYSQL
DATABASE 'federated_database_name'
URI 'hostname' [ PORT port_number ]
IAM_ROLE { default | 'arn:aws:iam::<Akun AWS-id>:role/<role-name>' }
SECRET_ARN 'ssm-secret-arn'

Sintaks berikut menjelaskan perintah CREATE EXTERNAL SCHEMA yang digunakan untuk referensi data dalam aliran Kinesis. Untuk informasi selengkapnya, lihat Streaming konsumsi ke tampilan yang terwujud.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] schema_name
FROM KINESIS
IAM_ROLE { default | 'arn:aws:iam::<Akun AWS-id>:role/<role-name>' }

Sintaks berikut menjelaskan perintah CREATE EXTERNAL SCHEMA yang digunakan untuk mereferensikan Amazon Managed Streaming for Apache Kafka cluster dan topiknya untuk dicerna. CLUSTER_ARN menentukan kluster MSK Amazon tempat Anda membaca datanya. Untuk informasi selengkapnya, lihat Streaming konsumsi ke tampilan yang terwujud.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] schema_name
FROM MSK
IAM_ROLE { default | 'arn:aws:iam::<Akun AWS-id>:role/<role-name>' }
AUTHENTICATION { none | iam }
CLUSTER_ARN 'msk-cluster-arn';

Sintaks berikut menjelaskan perintah CREATE EXTERNAL SCHEMA yang digunakan untuk referensi data menggunakan query cross-database.

CREATE EXTERNAL SCHEMA local_schema_name
FROM  REDSHIFT
DATABASE 'redshift_database_name' SCHEMA 'redshift_schema_name'

Parameter

JIKA TIDAK ADA

Klausa yang menunjukkan bahwa jika skema yang ditentukan sudah ada, perintah tidak boleh membuat perubahan dan mengembalikan pesan bahwa skema itu ada, daripada berakhir dengan kesalahan. Klausa ini berguna saat membuat skrip, sehingga skrip tidak gagal jika CREATE EXTERNAL SCHEMA mencoba membuat skema yang sudah ada.

local_schema_name

Nama skema eksternal baru. Untuk informasi selengkapnya tentang nama yang valid, lihatNama dan pengidentifikasi.

DARI [KATALOG DATA] | HIVE METASTORE | POSTGRES | MYSQL | KINESIS | MSK | PERGESERAN MERAH

Kata kunci yang menunjukkan di mana database eksternal berada.

KATALOG DATA menunjukkan bahwa database eksternal didefinisikan dalam katalog data Athena atau. AWS Glue Data Catalog

Jika database eksternal didefinisikan dalam Katalog Data eksternal di AWS Wilayah yang berbeda, parameter REGION diperlukan. DATA CATALOG adalah default.

HIVE METASTORE menunjukkan bahwa database eksternal didefinisikan dalam metastore Apache Hive. Jika HIVE METASTORE, ditentukan, URI diperlukan.

POSTGRES menunjukkan bahwa database eksternal didefinisikan dalam RDS PostgreSQL atau Aurora PostgreSQL.

MYSQL menunjukkan bahwa database eksternal didefinisikan dalam RDS MySQL atau Aurora MySQL.

KINESIS menunjukkan bahwa sumber data adalah aliran dari Kinesis Data Streams.

MSK menunjukkan bahwa sumber data adalah topik dari Amazon MSK.

DARI PERGESERAN MERAH

Kata kunci yang menunjukkan bahwa database terletak di Amazon Redshift.

DATABASE 'redshift_database_name' SKEMA 'redshift_schema_name'

Nama database Amazon Redshift.

Redshift_schema_name menunjukkan skema di Amazon Redshift. Redshift_schema_name default adalah. public

DATABASE 'federated_database_name'

Kata kunci yang menunjukkan nama database eksternal di PostgreSQL atau mesin database MySQL yang didukung.

[SKEMA 'schema_name']

Schema_name menunjukkan skema dalam mesin database PostgreSQL yang didukung. Schema_name default adalah. public

Anda tidak dapat menentukan SKEMA saat menyiapkan kueri federasi ke mesin database MySQL yang didukung.

WILAYAH 'aws-region'

Jika database eksternal didefinisikan dalam katalog data Athena atau AWS Glue Data Catalog, AWS Wilayah di mana database berada. Parameter ini diperlukan jika database didefinisikan dalam Katalog Data eksternal.

URI 'hive_metastore_uri' [PORT port_number]

URI hostname dan port_number dari PostgreSQL atau MySQL yang didukung mesin database MySQL. Nama host adalah simpul kepala dari set replika. Titik akhir harus dapat dijangkau (dapat dirutekan) dari cluster Amazon Redshift. PostgreSQL port_number default adalah 5432. Port_number MySQL default adalah 3306.

Jika database berada dalam metastore Hive, tentukan URI dan opsional nomor port untuk metastore. Nomor port default adalah 9083.

URI tidak berisi spesifikasi protokol (“http://”). Contoh URI yang valid:uri '172.10.10.10'.

catatan

Mesin database PostgreSQL atau MySQL yang didukung harus berada di VPC yang sama dengan cluster Amazon Redshift Anda. Buat grup keamanan yang menautkan Amazon Redshift dan RDS PostgreSQL atau Aurora PostgreSQL.

IAM_ROLE {default | 'SESI' | 'arn:aws:iam:: < -id>:role/ '}Akun AWS <role-name>

Gunakan kata kunci default agar Amazon Redshift menggunakan peran IAM yang ditetapkan sebagai default dan terkait dengan cluster saat perintah CREATE EXTERNAL SCHEMA berjalan.

Gunakan 'SESSION' jika Anda terhubung ke klaster Amazon Redshift menggunakan identitas federasi dan mengakses tabel dari skema eksternal yang dibuat menggunakan perintah ini. Untuk informasi selengkapnya, lihat Menggunakan identitas federasi untuk mengelola akses Amazon Redshift ke sumber daya lokal dan tabel eksternal Amazon Redshift Spectrum, yang menjelaskan cara mengonfigurasi identitas federasi. Perhatikan bahwa konfigurasi ini, menggunakan 'SESSION' sebagai pengganti ARN, hanya dapat digunakan jika skema dibuat menggunakan. DATA CATALOG

Gunakan Amazon Resource Name (ARN) untuk peran IAM yang digunakan klaster Anda untuk autentikasi dan otorisasi. Minimal, peran IAM harus memiliki izin untuk melakukan operasi LIST di bucket Amazon S3 untuk diakses dan operasi GET pada objek Amazon S3 yang berisi bucket.

Berikut ini menunjukkan sintaks untuk string parameter IAM_ROLE untuk ARN tunggal.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

Anda dapat merantai peran sehingga klaster Anda dapat mengambil peran IAM lain, mungkin milik akun lain. Anda dapat merantai hingga 10 peran. Untuk contoh peran rantai, lihatMerantai peran IAM dalam Amazon Redshift Spectrum.

Untuk peran IAM ini, lampirkan kebijakan izin IAM yang serupa dengan yang berikut ini.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AccessSecret", "Effect": "Allow", "Action": [ "secretsmanager:GetResourcePolicy", "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret", "secretsmanager:ListSecretVersionIds" ], "Resource": "arn:aws:secretsmanager:us-west-2:123456789012:secret:my-rds-secret-VNenFy" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "secretsmanager:GetRandomPassword", "secretsmanager:ListSecrets" ], "Resource": "*" } ] }

Untuk langkah-langkah untuk membuat peran IAM yang akan digunakan dengan kueri federasi, lihat. Membuat rahasia dan peran IAM untuk menggunakan kueri federasi

catatan

Jangan sertakan spasi dalam daftar peran yang dirantai.

Berikut ini menunjukkan sintaks untuk rantai tiga peran.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-1-name>,arn:aws:iam::<aws-account-id>:role/<role-2-name>,arn:aws:iam::<aws-account-id>:role/<role-3-name>'
RAHASIA_ARN '' ssm-secret-arn

Nama Sumber Daya Amazon (ARN) dari rahasia mesin database PostgreSQL atau MySQL yang didukung yang dibuat menggunakan. AWS Secrets ManagerUntuk informasi tentang cara membuat dan mengambil ARN untuk rahasia, lihat Membuat Rahasia Dasar dan Mengambil Rahasia Nilai Rahasia diAWS Secrets Manager Panduan Pengguna.

CATALOG_ROLE {'SESI' |} catalog-role-arn-string

Gunakan 'SESSION' untuk menyambung ke klaster Amazon Redshift menggunakan identitas federasi untuk autentikasi dan otorisasi ke katalog data. Untuk informasi selengkapnya tentang menyelesaikan langkah-langkah untuk identitas federasi, lihat Menggunakan identitas federasi untuk mengelola akses Amazon Redshift ke sumber daya lokal dan tabel eksternal Amazon Redshift Spectrum. Perhatikan bahwa 'SESSION' peran hanya dapat digunakan jika skema dibuat dalam KATALOG DATA.

Gunakan ARN Nama Sumber Daya Amazon untuk peran IAM yang digunakan klaster Anda untuk autentikasi dan otorisasi katalog data.

Jika CATALOG_ROLE tidak ditentukan, Amazon Redshift menggunakan IAM_ROLE yang ditentukan. Peran katalog harus memiliki izin untuk mengakses Katalog Data di AWS Glue atau Athena. Untuk informasi selengkapnya, lihat Kebijakan IAM untuk Amazon Redshift Spectrum.

Berikut ini menunjukkan sintaks untuk string parameter CATALOG_ROLE untuk ARN tunggal.

CATALOG_ROLE 'arn:aws:iam::<aws-account-id>:role/<catalog-role>'

Anda dapat merantai peran sehingga klaster Anda dapat mengambil peran IAM lain, mungkin milik akun lain. Anda dapat merantai hingga 10 peran. Untuk informasi selengkapnya, lihat Merantai peran IAM dalam Amazon Redshift Spectrum.

catatan

Daftar peran yang dirantai tidak boleh menyertakan spasi.

Berikut ini menunjukkan sintaks untuk rantai tiga peran.

CATALOG_ROLE 'arn:aws:iam::<aws-account-id>:role/<catalog-role-1-name>,arn:aws:iam::<aws-account-id>:role/<catalog-role-2-name>,arn:aws:iam::<aws-account-id>:role/<catalog-role-3-name>'

BUAT DATABASE EKSTERNAL JIKA TIDAK ADA

Klausa yang membuat database eksternal dengan nama yang ditentukan oleh argumen DATABASE, jika database eksternal yang ditentukan tidak ada. Jika database eksternal yang ditentukan ada, perintah tidak membuat perubahan. Dalam hal ini, perintah mengembalikan pesan bahwa database eksternal ada, bukan berakhir dengan kesalahan.

catatan

Anda tidak dapat menggunakan CREATE EXTERNAL DATABASE JIKA TIDAK ADA dengan HIVE METASTORE.

Untuk menggunakan CREATE EXTERNAL DATABASE JIKA TIDAK ADA dengan Katalog Data diaktifkan AWS Lake Formation, Anda memerlukan CREATE_DATABASE izin pada Katalog Data.

CATALOG_ID 'ID akun Amazon Web Services yang berisi basis data Glue atau Lake Formation '

Id akun tempat database katalog data disimpan.

CATALOG_IDdapat ditentukan hanya jika Anda berencana untuk terhubung ke klaster Amazon Redshift atau ke Amazon Redshift Tanpa Server menggunakan identitas federasi untuk otentikasi dan otorisasi ke katalog data dengan menyetel salah satu dari berikut ini:

  • CATALOG_ROLE untuk 'SESSION'

  • IAM_ROLEke 'SESSION' dan 'CATALOG_ROLE' atur ke defaultnya

Untuk informasi selengkapnya tentang menyelesaikan langkah-langkah untuk identitas federasi, lihat Menggunakan identitas federasi untuk mengelola akses Amazon Redshift ke sumber daya lokal dan tabel eksternal Amazon Redshift Spectrum.

OTENTIKASI

Jenis otentikasi yang ditentukan untuk konsumsi streaming. Penyerapan streaming dengan jenis otentikasi berfungsi dengan Amazon Managed Streaming for Apache Kafka. AUTHENTICATIONJenisnya adalah sebagai berikut:

CLUSTER_ARN

Untuk konsumsi streaming, pengidentifikasi cluster untuk cluster Amazon Managed Streaming for Apache Kafka Kafka tempat Anda streaming. Untuk informasi lebih lanjut, lihat Streaming ingestion.

Catatan penggunaan

Untuk batasan saat menggunakan katalog data Athena, lihat Batas Athena di. Referensi Umum AWS

Untuk batas saat menggunakan AWS Glue Data Catalog, lihat AWS Glue Batas di Referensi Umum AWS.

Batasan ini tidak berlaku untuk metastore Hive.

Ada maksimum 9.900 skema per database. Untuk informasi selengkapnya, lihat Kuota dan batasan di Panduan Manajemen Pergeseran Merah Amazon.

Untuk membatalkan pendaftaran skema, gunakan perintah. DROP SCHEMA

Untuk melihat detail skema eksternal, kueri tampilan sistem berikut:

Contoh

Contoh berikut membuat skema eksternal menggunakan database dalam katalog data bernama sampledb di Wilayah Barat AS (Oregon). Gunakan contoh ini dengan Athena atau katalog AWS Glue data.

create external schema spectrum_schema from data catalog database 'sampledb' region 'us-west-2' iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole';

Contoh berikut membuat skema eksternal dan membuat database eksternal baru bernamaspectrum_db.

create external schema spectrum_schema from data catalog database 'spectrum_db' iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole' create external database if not exists;

Contoh berikut membuat skema eksternal menggunakan database metastore Hive bernama. hive_db

create external schema hive_schema from hive metastore database 'hive_db' uri '172.10.10.10' port 99 iam_role 'arn:aws:iam::123456789012:role/MySpectrumRole';

Contoh berikut merantai peran untuk menggunakan peran myS3Role untuk mengakses Amazon S3 dan myAthenaRole digunakan untuk akses katalog data. Untuk informasi selengkapnya, lihat Merantai peran IAM dalam Amazon Redshift Spectrum.

create external schema spectrum_schema from data catalog database 'spectrum_db' iam_role 'arn:aws:iam::123456789012:role/myRedshiftRole,arn:aws:iam::123456789012:role/myS3Role' catalog_role 'arn:aws:iam::123456789012:role/myAthenaRole' create external database if not exists;

Contoh berikut membuat skema eksternal yang mereferensikan database Aurora PostgreSQL.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] myRedshiftSchema FROM POSTGRES DATABASE 'my_aurora_db' SCHEMA 'my_aurora_schema' URI 'endpoint to aurora hostname' PORT 5432 IAM_ROLE 'arn:aws:iam::123456789012:role/MyAuroraRole' SECRET_ARN 'arn:aws:secretsmanager:us-east-2:123456789012:secret:development/MyTestDatabase-AbCdEf'

Contoh berikut membuat skema eksternal untuk merujuk ke sales_db diimpor pada cluster konsumen.

CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';

Contoh berikut membuat skema eksternal yang mereferensikan database Aurora MySQL.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] myRedshiftSchema FROM MYSQL DATABASE 'my_aurora_db' URI 'endpoint to aurora hostname' IAM_ROLE 'arn:aws:iam::123456789012:role/MyAuroraRole' SECRET_ARN 'arn:aws:secretsmanager:us-east-2:123456789012:secret:development/MyTestDatabase-AbCdEf'