Gestione della condivisione dati con AWS CloudFormation - 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à.

Gestione della condivisione dati con AWS CloudFormation

Puoi automatizzare la configurazione della condivisione dei dati utilizzando uno AWS CloudFormation stack che fornisce risorse. AWS Lo CloudFormation stack configura la condivisione dei dati tra due cluster Amazon Redshift nello stesso account. 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 desideri iniziare a condividere i dati in un AWS account eseguendo istruzioni SQL per configurare un datashare e concedere le autorizzazioni, senza utilizzarlo, consulta. CloudFormation Condivisione dell'accesso in lettura ai dati all'interno di un Account AWS

Prima di eseguire lo CloudFormation stack di condivisione dei dati, devi accedere con un utente autorizzato a 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 sull'utilizzo della condivisione dei dati in Amazon Redshift.

Per ulteriori informazioni su come iniziare a configurare un cluster Amazon Redshift, consulta Amazon Redshift provisioned clusters. Per ulteriori informazioni sull'automazione della configurazione con CloudFormation, consulta What is? AWS CloudFormation

Importante

Prima di lanciare lo CloudFormation stack, 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 CloudFormation lo stack per la condivisione dei dati di Amazon Redshift:
  1. Fai clic su Avvia lo stack CFN, che ti porterà al CloudFormation servizio in. AWS Management Console

    Se ti viene richiesto, effettua l'accesso.

    Viene avviato il processo di creazione dello stack, facendo riferimento a un file CloudFormation modello archiviato in Amazon S3. Un CloudFormation modello è un file di testo in formato JSON che dichiara AWS le risorse che compongono uno stack. Per ulteriori informazioni sui CloudFormation modelli, consulta Impara le nozioni di base sui modelli.

  2. Scegliere Successivo per inserire i dettagli della pila.

  3. 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.

    Seleziona Successivo.

  4. Vengono visualizzate le opzioni della pila.

    Scegliere Successivo per accettare le impostazioni predefinite.

  5. In Capacità, scegli Riconosco che AWS CloudFormation potrebbe creare risorse IAM.

  6. Seleziona Crea stack.

CloudFormation impiega circa 10 minuti per creare lo stack Amazon Redshift utilizzando il modello, creando un datashare chiamato. 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:
  1. Connettiti al cluster di produttori sul database inserito al momento della creazione CloudFormation dello stack, utilizzando uno strumento client come Amazon Redshift query editor v2.

  2. 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.

  3. 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_sales e tickit_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.

  4. 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 | +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+
  5. È 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 utilizzo di una 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 Tabella SALES.

    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.

  6. 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.