CREATE EXTERNAL SCHEMA - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

CREATE EXTERNAL SCHEMA

Crea un nuovo schema esterno nel database corrente. È possibile utilizzare questo schema esterno per connettersi al database Amazon RDS for PostgreSQL o al database Amazon Aurora Edizione compatibile con PostgreSQL. Puoi anche creare uno schema esterno che faccia riferimento a un database in un catalogo di dati esterno come AWS Glue Athena o a un database in un metastore Apache Hive, come Amazon EMR.

Il proprietario di questo schema è l'emittente del comando CREATE EXTERNAL SCHEMA. Per trasferire la proprietà di uno schema esterno, utilizza ALTER SCHEMA per cambiare il proprietario. Usa il comando GRANT per concedere l'accesso allo schema ad altri utenti o gruppi di utenti.

Non puoi utilizzare i comandi GRANT o REVOKE per le autorizzazioni su una tabella esterna. Puoi invece concedere o revocare le autorizzazioni per lo schema esterno.

Nota

Se attualmente si dispone di tabelle esterne Redshift Spectrum nel catalogo dati di Amazon Athena, è possibile migrare tale catalogo di Athena a un AWS Glue Data Catalog. Per utilizzare AWS Glue Data Catalog con Redshift Spectrum, potrebbe essere necessario modificare le policy AWS Identity and Access Management (IAM). Per ulteriori informazioni, consulta Aggiornamento al AWS Glue Data Catalog nella Guida per l'utente di Athena.

Per visualizzare i dettagli degli schemi esterni, eseguire una query sulla vista di sistema SVV_EXTERNAL_SCHEMAS.

Sintassi

La sintassi seguente descrive il comando CREATE EXTERNAL SCHEMA utilizzato per fare riferimento ai dati utilizzando un catalogo dati esterno. Per ulteriori informazioni, consulta Amazon Redshift Spectrum.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] local_schema_name
FROM [ [ DATA CATALOG ] | HIVE METASTORE | POSTGRES | MYSQL | KINESIS | MSK | REDSHIFT | KAFKA ]
[ DATABASE 'database_name' ]
[ SCHEMA 'schema_name' ]
[ REGION 'aws-region' ]
[ IAM_ROLE [ default | 'SESSION' | 'arn:aws:iam::<Account AWS-id>:role/<role-name>' ] ]
[ AUTHENTICATION [ none | iam | mtls] ]
[ AUTHENTICATION_ARN 'acm-certificate-arn' | SECRET_ARN 'ssm-secret- arn' ]
[ URI ['hive_metastore_uri' [ PORT port_number ] | 'hostname' [ PORT port_number ] | 'Kafka bootstrap URL'] ] 
[ CLUSTER_ARN 'arn:aws:kafka:<region>:<Account 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' ]

La sintassi seguente descrive il comando CREATE EXTERNAL SCHEMA utilizzato per fare riferimento ai dati utilizzando una query federata su RDS POSTGRES o Aurora PostgreSQL. È inoltre possibile creare uno schema esterno che faccia riferimento a fonti di streaming, come Kinesis Data Streams. Per ulteriori informazioni, consulta Esecuzione di query su dati con query federate in 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::<Account AWS-id>:role/<role-name>' ]
SECRET_ARN 'ssm-secret-arn'

La sintassi seguente descrive il comando CREATE EXTERNAL SCHEMA utilizzato per fare riferimento ai dati utilizzando una query federata su RDS MySQL o Aurora MySQL. Per ulteriori informazioni, consulta Esecuzione di query su dati con query federate in 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::<Account AWS-id>:role/<role-name>' ]
SECRET_ARN 'ssm-secret-arn'

La sintassi seguente descrive il comando CREATE EXTERNAL SCHEMA utilizzato per fare riferimento ai dati in un flusso Kinesis. Per ulteriori informazioni, consulta Inserimento in streaming su una vista materializzata.

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

La sintassi seguente descrive il comando CREATE EXTERNAL SCHEMA utilizzato per fare riferimento al cluster Amazon Managed Streaming for Apache Kafka o Confluent Cloud e i relativi argomenti da cui importare. Per connetterti, fornisci l'URI del broker. Per ulteriori informazioni, consulta Inserimento in streaming su una vista materializzata.

CREATE EXTERNAL SCHEMA [IF NOT EXISTS] schema_name
FROM KAFKA
[ IAM_ROLE [ default | 'arn:aws:iam::<Account AWS-id>:role/<role-name>' ] ]
URI 'Kafka bootstrap URI'
AUTHENTICATION [ none | iam | mtls ]
[ AUTHENTICATION_ARN 'acm-certificate-arn' | SECRET_ARN 'ssm-secret- arn' ];

La sintassi seguente descrive il comando CREATE EXTERNAL SCHEMA utilizzato per fare riferimento ai dati utilizzando una query tra database.

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

Parametri

IF NOT EXISTS

Clausola che indica che se lo schema specificato esiste già, il comando non deve apportare modifiche e deve restituire un messaggio che lo schema esiste, piuttosto che terminare con un errore. Questa clausola è utile durante lo scripting, quindi lo script non fallisce se CREATE EXTERNAL SCHEMA tenta di creare uno schema già esistente.

local_schema_name

Il nome del nuovo schema esterno. Per ulteriori informazioni sui nomi validi, consultare Nomi e identificatori.

FROM [ DATA CATALOG ] | HIVE METASTORE | POSTGRES | MYSQL | KINESIS | MSK | REDSHIFT

Parola chiave che indica dove si trova il database esterno.

DATA CATALOG indica che il database esterno è definito nel catalogo dati di Athena o AWS Glue Data Catalog.

Se il database esterno è definito in un catalogo dati esterno in una regione AWS diversa, è necessario il parametro REGION. DATA CATALOG è il valore predefinito.

HIVE METASTORE indica che il database esterno è definito in un metastore Apache Hive. Se è specificato HIVE METASTORE, l'URI è obbligatorio.

POSTGRES indica che il database esterno è definito in RDS PostgreSQL o Aurora PostgreSQL.

MYSQL indica che il database esterno è definito in RDS MySQL o Aurora MySQL.

KINESIS indica che l'origine dati è un flusso di Kinesis Data Streams.

MSK indica che l'origine dati è un cluster serverless o fornito da Amazon MSK.

KAFKA indica che l'origine dati è un cluster Kafka. Puoi utilizzare questa parola chiave sia per Amazon MSK che per Confluent Cloud.

FROM REDSHIFT

Una parola chiave che indica che il database si trova in Amazon Redshift.

DATABASE 'nome_database_redshift' SCHEMA 'nome_schema_redshift'

Il nome del database Amazon Redshift.

nome_schema redshift indica lo schema in Amazon Redshift. Il valore di timeout di default per nome_schema redshift è public.

DATABASE 'nome_database_federato'

Una parola chiave che indica il nome del database esterno in un motore del database PostgreSQL o MySQL supportato.

[SCHEMA 'nome_schema']

nome_schema indica lo schema in un motore del database PostgreSQL supportato. Lo schema_name predefinito è public.

Non è possibile specificare uno SCHEMA quando si imposta una query federata su un motore di database MySQL supportato.

REGION 'aws-region'

Se il database esterno è definito in un catalogo dati Athena o nella AWS Glue Data Catalog, la AWS regione in cui si trova il database. Questo parametro è obbligatorio se il database è definito in un catalogo dati esterno.

URI ['hive_metastore_uri' [numero_porta] | 'nome host' [numero_porta] | 'URI bootstrap Kafka']

L'URI del nome host e il numero di porta di un motore del database PostgreSQL o MySQL supportato. Il valore hostname è il nodo principale del set di repliche. L'endpoint deve essere raggiungibile (instradabile) dal cluster Amazon Redshift. Il port_number predefinito per PostgreSQL è 5432. Il port_number predefinito per MySQL è 3306.

Nota

Il motore di database PostgreSQL o MySQL supportato deve trovarsi nello stesso VPC del cluster Amazon Redshift con un gruppo di sicurezza che colleghi Amazon Redshift e RDS URL-RSpostgreSQL o Aurora PostgreSQL. Inoltre, puoi utilizzare il routing VPC avanzato per configurare un caso d'uso tra VPC. Per ulteriori informazioni, consulta Endpoint VPC gestiti da Redshift.

Specificare un URI del metastore Hive

Se il database si trova in un metastore Hive, specifica l'URI e facoltativamente il numero di porta per il metastore. Il numero di porta predefinito è 9083.

Un URI non contiene una specifica di protocollo ("http://"). Un URI valido esempio è uri '172.10.10.10'.

Specificazione di un URI del broker per l'ingestione dello streaming

L'inclusione dell'URI bootstrap-broker offre la possibilità di connettersi a un cluster Amazon MSK o Confluent Cloud e ricevere dati in streaming. Per ulteriori informazioni e per vedere un esempio, consulta Getting started with streaming ingestion from Amazon Managed Streaming for Apache Kafka.

IAM_ROLE [predefinito | 'SESSION' | 'arn:aws:iam: :role/ '] <Account AWS-id> <role-name>

Utilizzare la parola chiave predefinita per fare in modo che Amazon Redshift utilizzi il ruolo IAM impostato come predefinito e associato al cluster quando viene eseguito il comando CREATE EXTERNAL SCHEMA.

Utilizzare 'SESSION' se ci si connette al cluster Amazon Redshift utilizzando un'identità federata e si accede alle tabelle dallo schema esterno creato con questo comando. Per ulteriori informazioni, consulta l'argomento relativo all'utilizzo di un'identità federata per gestire l'accesso di Amazon Redshift alle risorse locali e alle tabelle esterne di Amazon Redshift Spectrum, che illustra come configurare l'identità federata. Si noti che questa configurazione, che utilizza 'SESSION' al posto dell'ARN, può essere utilizzata solo se lo schema è stato creato utilizzando DATA CATALOG.

L'Amazon Resource Name (ARN) per un ruolo IAM utilizzato dal cluster per l'autenticazione e l'autorizzazione. Come minimo, il ruolo IAM deve disporre dell'autorizzazione per eseguire un'operazione LIST sul bucket Amazon S3 a cui accedere e un'operazione GET sugli oggetti Amazon S3 contenuti nel bucket.

Quanto segue mostra la sintassi per la stringa di parametro IAM_ROLE per un singolo ARN.

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

È possibile concatenare i ruoli in modo che il cluster possa presumere un altro ruolo IAM, possibilmente appartenente a un altro account. Puoi concatenare fino a 10 ruoli. Per un esempio di concatenamento di ruoli, vedi Concatenazione di ruoli IAM per Amazon Redshift Spectrum.

Per collegare a questo ruolo IAM una policy di autorizzazioni IAM simile alla seguente.

{ "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": "*" } ] }

Per la procedura per creare un ruolo IAM da utilizzare con la query federata, consultare Creazione di un segreto e di un ruolo IAM per l'utilizzo di query federate.

Nota

Non includere spazi nell'elenco dei ruoli concatenati.

Quanto segue mostra la sintassi per concatenare tre ruoli.

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>'
ssm-secret-arnSECRET_ARN ''

L'Amazon Resource Name (ARN) di un segreto del motore di database PostgreSQL o MySQL supportato creato utilizzando. AWS Secrets Manager Per informazioni su come creare e recuperare un ARN per un segreto, consultare Creazione di un segreto di base e Recupero del valore segreto nella Guida per l'utente di AWS Secrets Manager .

CATALOG_ROLE ['SESSIONE' |] catalog-role-arn-string

Utilizzare 'SESSION' per la connessione al cluster Amazon Redshift utilizzando un'identità federata per l'autenticazione e l'autorizzazione al catalogo di dati. Per ulteriori informazioni sul completamento della procedura per l'identità federata, consulta l'argomento relativo all'utilizzo di un'identità federata per gestire l'accesso di Amazon Redshift alle risorse locali e alle tabelle esterne di Amazon Redshift Spectrum. Si noti che il ruolo 'SESSION' può essere utilizzato solo se lo schema viene creato in DATA CATALOG.

Il nome della risorsa Amazon (ARN) per un ruolo IAM utilizzato dal cluster per l'autenticazione e l'autorizzazione del catalogo dati.

Se CATALOG_ROLE non viene specificato, Amazon Redshift utilizza l'IAM_ROLE specificato. Il ruolo del catalogo deve disporre dell'autorizzazione per accedere al Data Catalog in AWS Glue o Athena. Per ulteriori informazioni, consulta Policy IAM per Amazon Redshift Spectrum.

Quanto segue mostra la sintassi per la stringa di parametro CATALOG_ROLE per un singolo ARN.

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

È possibile concatenare i ruoli in modo che il cluster possa presumere un altro ruolo IAM, possibilmente appartenente a un altro account. Puoi concatenare fino a 10 ruoli. Per ulteriori informazioni, consulta Concatenazione di ruoli IAM per Amazon Redshift Spectrum.

Nota

L'elenco di ruoli concatenati non deve includere spazi.

Quanto segue mostra la sintassi per concatenare tre ruoli.

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>'

CREATE EXTERNAL DATABASE IF NOT EXISTS

Clausola che crea un database esterno con il nome specificato dall'argomento DATABASE, se il database esterno specificato non esiste. Se il database esterno specificato esiste, il comando non apporta modifiche. In questo caso, il comando restituisce un messaggio che il database esterno esiste, anziché terminare con un errore.

Nota

CREATE EXTERNAL DATABASE IF NOT EXISTS non può essere usato con HIVE METASTORE.

Per utilizzare CREATE EXTERNAL DATABASE IF NOT EXISTS con il catalogo dati abilitato per AWS Lake Formation, è necessaria l'autorizzazione CREATE_DATABASE sul catalogo dati.

CATALOG_ID "ID account Amazon Web Services contenente il database Glue o Lake Formation"

L'ID dell'account in cui è archiviato il database del catalogo dati.

CATALOG_ID può essere specificato solo se si prevede di connettersi al cluster Amazon Redshift o ad Amazon Redshift Serverless utilizzando un'identità federata per l'autenticazione e l'autorizzazione al catalogo di dati configurando una delle seguenti impostazioni:

  • CATALOG_ROLE Da a 'SESSION'

  • IAM_ROLE su 'SESSION' e 'CATALOG_ROLE' impostati sul valore predefinito

Per ulteriori informazioni sul completamento della procedura per l'identità federata, consulta l'argomento relativo all'utilizzo di un'identità federata per gestire l'accesso di Amazon Redshift alle risorse locali e alle tabelle esterne di Amazon Redshift Spectrum.

AUTHENTICATION

Il tipo di autenticazione definito per l'importazione di dati in streaming. L'importazione di dati in streaming con i tipi di autenticazione funziona con Amazon Managed Streaming per Apache Kafka. I tipi di AUTHENTICATION sono i seguenti:

  • nessuno: specifica che non è richiesta alcuna autenticazione. Corrisponde all'accesso non autenticato su MSK o al testo semplice con TLS su Apache Kafka.

  • iam: specifica l'autenticazione IAM. Quando scegli questa opzione, assicurati che il ruolo IAM disponga delle autorizzazioni per l'autenticazione IAM. Per ulteriori informazioni sulla definizione dello schema esterno, consulta Guida introduttiva all'acquisizione di streaming da sorgenti Apache Kafka.

  • mtls: specifica che la sicurezza a livello di trasporto reciproco fornisce comunicazioni sicure facilitando l'autenticazione tra client e server. In questo caso, il client è Redshift e il server è Amazon MSK. Per ulteriori informazioni sulla configurazione dell'ingestione di streaming con MTL, consulta. Autenticazione con MTL per l'acquisizione di streaming Redshift da sorgenti Apache Kafka

AUTHENTICATION_ARN

L'ARN del AWS Certificate Manager certificato utilizzato da Amazon Redshift per l'autenticazione mtls con Amazon MSK. L'ARN è disponibile nella console ACM quando si sceglie il certificato emesso.

CLUSTER_ARN

Per l'inserimento dello streaming, CLUSTER_ARN è l'identificatore del cluster Amazon Managed Streaming for Apache Kafka da cui esegui lo streaming. Quando si utilizza CLUSTER_ARN, è necessaria una policy di ruolo IAM che includa l'autorizzazione. kafka:GetBootstrapBrokers Questa opzione viene fornita per la compatibilità con le versioni precedenti. Attualmente, consigliamo di utilizzare l'opzione URI bootstrap-broker per connettersi ai cluster Amazon Managed Streaming for Apache Kafka. Per ulteriori informazioni, consulta Importazione dati in streaming.

Note per l'utilizzo

Per i limiti per l'uso del catalogo di dati Athena, consulta Limiti di Athena in Riferimenti generali di AWS.

Per i limiti relativi all'utilizzo di, consulta Limiti in. AWS Glue Data CatalogAWS Glue Riferimenti generali di AWS

Questi limiti non si applicano a un metastore Hive.

È presente un massimo di 9900 schemi per database. Per ulteriori informazioni, consulta Quote e limiti nella Guida alla gestione di Amazon Redshift.

Per annullare la registrazione dello schema, utilizzare il comando DROP SCHEMA.

Per visualizzare i dettagli degli schemi esterni, eseguire una query sulle viste di sistema seguenti:

Esempi

L'esempio seguente crea uno schema esterno che utilizza un database in un catalogo dati denominato sampledb nella regione Stati Uniti occidentali (Oregon). Usa questo esempio con un catalogo dati Athena o AWS Glue .

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

L'esempio seguente crea uno schema esterno e un nuovo database esterno denominato spectrum_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;

L'esempio seguente crea uno schema esterno che utilizza un database metastore Hive denominato 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';

Nell'esempio seguente sono concatenati i ruoli per utilizzare il ruolo myS3Role per accedere ad Amazon S3 ed è utilizzato myAthenaRole per l'accesso al catalogo dati. Per ulteriori informazioni, consulta Concatenazione di ruoli IAM per 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;

Nell'esempio seguente viene creato uno schema esterno che fa riferimento a un 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'

Nell'esempio seguente viene creato uno schema esterno per fare riferimento al database sales_db importato nel cluster di consumer.

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

Nell'esempio seguente viene creato uno schema esterno che fa riferimento a un 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'