Amazon Redshift non supporterà più la creazione di nuove UDF Python a partire dal 1º novembre 2025. Se desideri utilizzare le UDF Python, creale prima di tale data. Le UDF Python esistenti continueranno a funzionare normalmente. Per ulteriori informazioni, consulta il post del blog
Nozioni di base sulla condivisione di dati con AWS CloudFormation in Amazon Redshift
È possibile automatizzare la configurazione della condivisione dei dati utilizzando una pila AWS CloudFormation, che fornisce risorse AWS. Lo stack CloudFormation descritto di seguito imposta la condivisione dei dati tra due cluster Amazon Redshift nello stesso AWS. In questo modo, puoi avviare la condivisione dati senza eseguire istruzioni SQl per il provisioning delle risorse.
Lo stack crea una unità di condivisione dati sul cluster designato. L'unità di condivisione dati include una tabella e dati di esempio di sola lettura. Questi dati possono essere letti dall'altro cluster Amazon Redshift.
Se vuoi iniziare a condividere i dati in un account AWS eseguendo istruzioni SQL per impostare una unità di condivisione dati e concedere autorizzazioni, senza utilizzare CloudFormation, consulta Condivisione dell’accesso in lettura ai dati all’interno di un Account AWS.
Prima di eseguire lo stack CloudFormation per la condivisione dei dati, è necessario effettuare l'accesso con un utente che disponga dell'autorizzazione per creare un ruolo IAM e una funzione Lambda. Hai anche bisogno di due cluster Amazon Redshift nello stesso account. Tu ne usi uno, il produttore, per condividere i dati di esempio e l'altro consumatore, per leggerlo. Il requisito principale per questi cluster è che ognuno utilizza nodi RA3. Per i requisiti aggiuntivi, consultare Considerazioni sulla condivisione dei dati in Amazon Redshift.
Per ulteriori informazioni sulle nozioni di base della configurazione di un cluster Amazon Redshift, consulta Nozioni di base sui data warehouse con provisioning Amazon Redshift. Per ulteriori informazioni sull'automazione della configurazione con CloudFormation, consulta Che cos'è AWS CloudFormation?
Importante
Prima di avviare lo stack CloudFormation, assicurati di avere due cluster Amazon Redshift nello stesso account e che i cluster utilizzino nodi RA3. Assicurati che ogni cluster abbia un database e un utente con privilegi avanzati. Per ulteriori informazioni, consulta CREATE DATABASE e superuser.
Per avviare la pila CloudFormation per la condivisione dei dati di Amazon Redshift:
-
Fare clic su Avvio della pila CFN
, che ti porta al servizio CloudFormation nel Console di gestione AWS. Se ti viene richiesto, effettua l'accesso.
Viene avviato il processo di creazione della pila, facendo riferimento a un file modello CloudFormation, memorizzato in Amazon S3. Un modello CloudFormation è un file di testo in formato JSON che dichiara le risorse AWS che compongono una pila. Per ulteriori informazioni sui modelli CloudFormation, consulta Learn template basics.
-
Scegliere Successivo per inserire i dettagli della pila.
-
Sotto Parametri, per ciascun cluster, immettere quanto segue:
-
Il nome del cluster Amazon Redshift, ad esempio
ra3-consumer-cluster -
Il nome del database, ad esempio
dev -
Il nome dell'utente del database, ad esempio
consumeruser
Si consiglia di utilizzare cluster di test, perché la pila crea diversi oggetti di database.
Scegli Next (Successivo).
-
-
Vengono visualizzate le opzioni della pila.
Scegliere Successivo per accettare le impostazioni predefinite.
-
In Funzionalità, scegliere prendo atto che AWS CloudFormation può creare risorse IAM.
-
Seleziona Crea stack.
CloudFormation impiega circa dieci minuti per creare lo stack Amazon Redshift utilizzando il modello, creando un'unità di condivisione dati chiamata myproducer_share. La pila crea l'unità nel database specificato nei dettagli della pila. Solo gli oggetti di quel database possono essere condivisi.
Se si verifica un errore durante la creazione della pila, procedere come segue:
-
Assicurarsi di aver immesso il nome del cluster, il nome del database e il nome utente del database corretti per ciascun cluster Redshift.
-
Assicurarsi che il cluster disponga di nodi RA3.
-
Assicurati di essere collegato come un utente che abbia l'autorizzazione a creare un ruolo IAM e una funzione Lambda. Per ulteriori informazioni sulla creazione dei ruoli IAM, consulta Creazione di ruoli IAM. Per ulteriori informazioni sulle policy per la creazione di funzioni Λ, consulta Function development.
Query del datashare creato
Per utilizzare la procedura seguente, assicurarsi di disporre delle autorizzazioni necessarie per eseguire query su ciascun cluster descritto.
Per eseguire query sull'unità unità di condivisione dati:
-
Connettiti al cluster producer nel database immesso al momento della creazione dello stack CloudFormation, utilizzando uno strumento client come l'Editor di query Amazon Redshift V2.
-
Esegui query sulle unità di condivisione dati.
SHOW DATASHARES;+------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+ | share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace | +------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+ | myproducer_share | 100 | sample_data_dev | myconsumer_db | INBOUND | NULL | true | NULL |producer-acct|your-producer-namespace| +------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+Il comando precedente restituisce il nome dell'unità creata dalla pila, denominata
myproducer_share. Restituisce inoltre il nome del database associato all'unità di condivisione dati, .,myconsumer_db.Copiare l'identificatore dello spazio dei nomi del produttore da utilizzare in un passaggio successivo.
-
Descrivi gli oggetti nell'unità unità di condivisione dati.
DESC DATASHARE myproducer_share;+------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ | producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ |producer-acct|your-producer-namespace| OUTBOUND | myproducer_share | schema | myproducer_schema | true | |producer-acct|your-producer-namespace| OUTBOUND | myproducer_share | table | myproducer_schema.tickit_sales | NULL | |producer-acct|your-producer-namespace| OUTBOUND | myproducer_share | view | myproducer_schema.ticket_sales_view | NULL | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+Quando descrivi l'unità di condivisione dati, vengono restituite le proprietà per tabelle e viste. La pila aggiunge tabelle e viste con dati di esempio al database del produttore, ad esempio
tickit_salesetickit_sales_view. Per ulteriori informazioni sul database di esempio TICKIT, consultaDatabase di esempio.Non è necessario delegare le autorizzazioni nell'unità per eseguire query. La pila concede le autorizzazioni necessarie.
-
Connettitti al cluster consumer utilizzando lo strumento client. Descrivi l'unità, specificando lo spazio dei nomi del produttore.
DESC DATASHARE myproducer_share OF NAMESPACE '<namespace id>'; --specify the unique identifier for the producer namespace+------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ | producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ |producer-acct|your-producer-namespace| INBOUND | myproducer_share | schema | myproducer_schema | NULL | |producer-acct|your-producer-namespace| INBOUND | myproducer_share | table | myproducer_schema.tickit_sales | NULL | |producer-acct|your-producer-namespace| INBOUND | myproducer_share | view | myproducer_schema.ticket_sales_view | NULL | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+ -
È possibile eseguire query sulle tabelle nell'unità unità di condivisione dati specificando il database e lo schema dell'unità. Per ulteriori informazioni, consulta Esempi di query tra database. Le seguenti query restituiscono i dati relativi alle vendite e ai venditori dalla tabella SALES del database di esempio TICKIT. Per ulteriori informazioni, consulta Database di esempio.
SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales_view;+---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | 1 | 1 | 36861 | 21191 | 7872 | 1875 | 4 | 728 | 109.2 | 2008-02-18 02:36:48 | | 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76 | 11.4 | 2008-06-06 05:00:16 | | 3 | 5 | 1616 | 17433 | 8647 | 1983 | 2 | 350 | 52.5 | 2008-06-06 08:26:17 | | 4 | 5 | 1616 | 19715 | 8647 | 1986 | 1 | 175 | 26.25 | 2008-06-09 08:38:52 | | 5 | 6 | 47402 | 14115 | 8240 | 2069 | 2 | 154 | 23.1 | 2008-08-31 09:17:02 | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+Nota
La query viene eseguita contro la vista nello schema condiviso. Non è possibile connettersi direttamente ai database consumer creati dalle unità di condivisione dati. Sono di sola lettura.
-
Per eseguire una query che include aggregazioni, utilizza l'esempio seguente.
SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales ORDER BY 1,2 LIMIT 5;+---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+ | 1 | 1 | 36861 | 21191 | 7872 | 1875 | 4 | 728 | 109.2 | 2008-02-18 02:36:48 | | 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76 | 11.4 | 2008-06-06 05:00:16 | | 3 | 5 | 1616 | 17433 | 8647 | 1983 | 2 | 350 | 52.5 | 2008-06-06 08:26:17 | | 4 | 5 | 1616 | 19715 | 8647 | 1986 | 1 | 175 | 26.25 | 2008-06-09 08:38:52 | | 5 | 6 | 47402 | 14115 | 8240 | 2069 | 2 | 154 | 23.1 | 2008-08-31 09:17:02 | +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+La query restituisce i dati delle vendite e del venditore dai dati del database di esempio TICKIT.
Per ulteriori esempi di query di unità di condivisione dati, consultare Condivisione dell’accesso in lettura ai dati all’interno di un Account AWS.