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. Puoi utilizzare questo schema esterno per connetterti ai database Amazon RDS for Postgre SQL o Amazon Aurora Postgre SQL -Compatible Edition. 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 è possibile utilizzare i REVOKE comandi GRANT o 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 il 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 CREATE EXTERNAL SCHEMA comando 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 ]
[ 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 ] | 'msk 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 CREATE EXTERNAL SCHEMA comando utilizzato per fare riferimento ai dati utilizzando una query federata a o RDS POSTGRES Aurora Postgre. SQL È 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 CREATE EXTERNAL SCHEMA comando utilizzato per fare riferimento ai dati utilizzando una query federata a RDS My o SQL Aurora My. SQL 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 CREATE EXTERNAL SCHEMA comando usato 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 CREATE EXTERNAL SCHEMA comando usato per fare riferimento al cluster Amazon Managed Streaming for Apache Kafka e i relativi argomenti da cui importare. Per connetterti, fornisci il broker. URI Per ulteriori informazioni, consulta Inserimento in streaming su una vista materializzata.

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

La sintassi seguente descrive il CREATE EXTERNAL SCHEMA comando 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

SE 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 per la creazione di script, quindi lo script non ha esito negativo 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.

DATACATALOGindica che il database esterno è definito nel catalogo dati Athena o nel. AWS Glue Data Catalog

Se il database esterno è definito in un catalogo dati esterno in una AWS regione diversa, il REGION parametro è obbligatorio. DATACATALOGè l'impostazione predefinita.

HIVEMETASTOREindica che il database esterno è definito in un metastore Apache Hive. Se HIVEMETASTORE, è specificato, è obbligatorio. URI

POSTGRESindica che il database esterno è definito in RDS Postgre o SQL Aurora Postgre. SQL

MYSQLindica che il database esterno è definito in RDS My SQL o Aurora My. SQL

KINESISindica che l'origine dati è un flusso proveniente da Kinesis Data Streams.

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

FROM REDSHIFT

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

DATABASE'redshift_database_name' 'redshift_schema_name' SCHEMA

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

Una parola chiave che indica il nome del database esterno in un motore di database Postgre o My supportato. SQL SQL

[SCHEMA'nome_schema']

Lo schema_name indica lo schema in un motore di database Postgre supportato. SQL Lo schema_name predefinito è public.

Non è possibile specificare a SCHEMA quando si imposta una query federata su un motore di database My supportato. SQL

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' [PORTnumero_porta] | 'msk bootstrap '] PORT URL

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

Nota

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

Specificare un metastore hive URI

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

A URI non contiene una specifica di protocollo («http://»). Un esempio validoURI:uri '172.10.10.10'.

Specificare un broker URI per l'ingestione dello streaming

L'inclusione del bootstrap-broker URI offre la possibilità di connettersi a un MSK cluster Amazon 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 [impostazione predefinita | '' | SESSION 'arn:aws:iam::<Account AWS-id>:ruolo/<role-name>' ]

Utilizza la parola chiave predefinita per fare in modo che Amazon Redshift utilizzi il IAM ruolo impostato come predefinito e associato al cluster durante l'esecuzione del CREATE EXTERNAL SCHEMA comando.

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. Tieni presente che questa configurazione, utilizzata 'SESSION' al posto diARN, può essere utilizzata solo se lo schema viene creato utilizzandoDATA CATALOG.

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

Di seguito viene mostrata la sintassi della stringa del ROLE parametro IAM _ per una singola unità. ARN

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

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

A questo IAM ruolo, allega una politica di IAM autorizzazioni 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 i passaggi per creare un IAM ruolo da utilizzare con una query federata, vedi. Creazione di un segreto e di un IAM ruolo per utilizzare le 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>'
SECRET_ARN 'ssm-secret-arn'

L'Amazon Resource Name (ARN) di un segreto del motore di SQL database Postgre SQL o My supportato creato utilizzando. AWS Secrets ManagerPer informazioni su come creare e recuperare un segreto ARN per un segreto, consulta Creating a Basic Secret e Recupero del Secret Value Secret nella Guida per l'utente.AWS Secrets Manager

CATALOG_ROLE [ 'SESSION' | 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 'SESSION' ruolo può essere utilizzato solo se lo schema viene creato in. DATA CATALOG

Usa Amazon Resource Name ARN per un IAM ruolo utilizzato dal tuo cluster per l'autenticazione e l'autorizzazione per il catalogo dati.

Se CATALOG _ ROLE non è specificato, Amazon Redshift utilizza il _ specificatoIAM. ROLE Il ruolo del catalogo deve disporre dell'autorizzazione per accedere al Data Catalog in AWS Glue o Athena. Per ulteriori informazioni, consulta IAMpolitiche per Amazon Redshift Spectrum.

Di seguito viene illustrata la sintassi della stringa del ROLE parametro CATALOG _ per un singolo elemento. ARN

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

È possibile concatenare i ruoli in modo che il cluster possa assumere un altro IAM ruolo, possibilmente appartenente a un altro account. Puoi concatenare fino a 10 ruoli. Per ulteriori informazioni, consulta Concatenamento IAM dei ruoli in 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>'

CREATEEXTERNALDATABASESE NOT EXISTS

Una clausola che crea un database esterno con il nome specificato dall'DATABASEargomento, 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

Non è possibile utilizzare CREATE EXTERNAL DATABASE IF NOT EXISTS con HIVEMETASTORE.

Per utilizzare CREATE EXTERNAL DATABASE IF NOT EXISTS con un Data Catalog abilitato per AWS Lake Formation, è necessaria l'CREATE_DATABASEautorizzazione per accedere al Data Catalog.

CATALOG_ID 'ID dell'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:

AUTHENTICATION_ARN

Il ARN AWS Certificate Manager certificato utilizzato da Amazon Redshift per l'autenticazione mtls con Amazon. MSK ARNÈ disponibile nella ACM console quando scegli 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, richiede una politica di IAM ruolo che includa l'autorizzazione. kafka:GetBootstrapBrokers Questa opzione viene fornita per garantire la compatibilità con le versioni precedenti. Attualmente, consigliamo di utilizzare l'URIopzione 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 Athena o un catalogo di AWS Glue dati.

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 Concatenamento IAM dei ruoli in 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;

L'esempio seguente crea uno schema esterno che fa riferimento a un database Aurora SQL Postgre.

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

L'esempio seguente crea 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'