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à.
Condivisione di dati con licenza Amazon Redshift su AWS Data Exchange
Quando creano AWS Data Exchange condivisioni di dati e le aggiungono a un AWS Data Exchange prodotto, i fornitori possono concedere in licenza i dati in Amazon Redshift per consentire ai consumatori di scoprire, abbonarsi e up-to-date interrogare i dati in Amazon Redshift quando dispongono di abbonamenti attivi. AWS Data Exchange
Con le AWS Data Exchange condivisioni di dati aggiunte a un AWS Data Exchange prodotto, i consumatori hanno automaticamente accesso alle condivisioni di dati del prodotto all'inizio dell'abbonamento e mantengono l'accesso finché l'abbonamento è attivo.
Argomenti
Lavorare con i datashare in qualità di produttore AWS Data Exchange
Con Amazon Redshift, puoi condividere prodotti di dati in tempo reale con AWS Data Exchange un produttore creando e gestendo condivisioni di dati.
Se sei un amministratore di un cluster di produttori, segui questi passaggi per gestire le AWS Data Exchange condivisioni di dati sulla console Amazon Redshift:
Crea datashare nel tuo cluster su cui condividere dati AWS Data Exchange e concedere l'accesso ai datashare. AWS Data Exchange
Le unità di condivisione dati possono essere create dall'utente con privilegi avanzati e dai proprietari di database del cluster. Ogni unità di condivisione dati è associata a un database durante la creazione. Solo gli oggetti di quel database possono essere condivisi in quella unità di condivisione dati. Sullo stesso database possono essere create più unità di condivisione dati con la stessa granularità di oggetti o con una granularità differente. Non vi è alcun limite sul numero di unità di condivisione dati che un cluster può creare.
Per creare le unità di condivisione dati è possibile utilizzare anche la console Amazon Redshift. Per ulteriori informazioni, consulta Creazione di unità di condivisione dati.
Utilizza l'MANAGEDBYADXopzione per concedere implicitamente l'accesso al datashare a durante l'esecuzione dell'istruzione. AWS Data Exchange CREATE DATASHARE Ciò indica che AWS Data Exchange gestisce questo datashare. È possibile utilizzare l'MANAGEDBYADXopzione solo quando si crea un nuovo datashare. Non è possibile utilizzare l'ALTERDATASHAREistruzione per modificare un datashare esistente per aggiungere l'opzione. MANAGEDBY ADX Una volta creato un datashare con l'MANAGEDBYADXopzione, solo AWS Data Exchange può accedere e gestire il datashare.
CREATE DATASHARE salesshare [[SET] MANAGEDBY [=] {ADX} ];
Aggiungere oggetti alle unità di condivisione dati. L'amministratore di Producer continua a gestire gli oggetti datashare disponibili in un datashare. AWS Data Exchange
Per aggiungere oggetti a una unità di condivisione dati, aggiungere lo schema prima di aggiungere gli oggetti. Quando si aggiunge uno schema, Amazon Redshift non aggiunge tutti gli oggetti. È necessario aggiungerli esplicitamente. Per ulteriori informazioni, consulta ALTER DATASHARE.
ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift; ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;
A una unità di condivisione dati è possibile aggiungere anche le viste.
CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift; ALTER DATASHARE salesshare ADD TABLE public.sales_data_summary_view;
Consente ALTER DATASHARE di condividere schemi, tabelle, viste e funzioni in un determinato schema. I superutenti, i proprietari di datashare o gli utenti che dispongono delle autorizzazioni ALTER o ALL delle autorizzazioni sul datashare possono modificare il datashare per aggiungere o rimuovere oggetti da esso. Gli utenti devono disporre delle autorizzazioni per aggiungere o rimuovere oggetti dall'unità di condivisione dati. Gli utenti devono inoltre essere i proprietari degli oggetti o disporre SELECT delle autorizzazioni sugli oggetti. USAGE ALL
Utilizzate la INCLUDENEW clausola per aggiungere al datashare eventuali nuove tabelle, viste o funzioni SQL definite dall'utente (UDFs) create in uno schema specificato. Solo gli utenti con privilegi avanzati possono modificare questa proprietà per ogni coppia unità di condivisione dati-schema.
ALTER DATASHARE salesshare ADD SCHEMA PUBLIC; ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;
Per aggiungere o rimuovere oggetti dalle unità di condivisione dati è possibile utilizzare la console Amazon Redshift. Per ulteriori informazioni, consultare Aggiunta di oggetti di unità di condivisione dati alle unità di condivisione dati, Rimozione di oggetti di unità di condivisione dati dalle unità di condivisione dati e Modifica delle condivisioni AWS Data Exchange di dati.
Per autorizzare l'accesso ai datashare per, effettuate una delle seguenti operazioni: AWS Data Exchange
Autorizza esplicitamente l'accesso al datashare per AWS Data Exchange utilizzando la parola chiave in.
ADX
aws redshift authorize-data-share
API Ciò consente di riconoscere il AWS Data Exchange datashare nell'account del servizio e gestire l'associazione dei consumatori al datashare.aws redshift authorize-data-share --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare --consumer-identifier ADX
È possibile utilizzare una chiave condizionale
ConsumerIdentifier
per consentire oDeauthorizeDataShare
APIs negare esplicitamente di effettuare chiamate verso i due soggetti nella AWS Data Exchange policy.AuthorizeDataShare
APIs IAM{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Deny", "Action": [ "redshift:AuthorizeDataShare", "redshift:DeauthorizeDataShare" ], "Resource": "*", "Condition": { "StringEqualsIgnoreCase": { "redshift:ConsumerIdentifier": "ADX" } } } ] }
Utilizza la console Amazon Redshift per autorizzare o rimuovere l'autorizzazione delle condivisioni di dati. AWS Data Exchange Per ulteriori informazioni, consulta Autorizzazione o rimozione dell'autorizzazione dalle unità di condivisione dati.
Facoltativamente, puoi autorizzare implicitamente l'accesso al datashare quando importi il AWS Data Exchange datashare in un set di dati. AWS Data Exchange
Per rimuovere l'autorizzazione all'accesso ai datashare, utilizzate la parola chiave nell'operazione AWS Data Exchange .
ADX
aws redshift deauthorize-data-share
API In questo modo, consenti a AWS Data Exchange di riconoscere l'unità nell'account del servizio e gestire la rimozione dell'associazione dall'unità.aws redshift deauthorize-data-share --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare --consumer-identifier ADX
Elencare le unità di condivisione dati create nel cluster ed esaminare il contenuto dell'unità.
Nell'esempio seguente sono riportate le informazioni di una unità di condivisione dati denominata salesshare. Per ulteriori informazioni, consulta DESC DATASHARE e SHOW DATASHARES.
DESC DATASHARE salesshare; producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new -------------------+--------------------------------------+------------+------------+-------------+--------------------------------+------------------- 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_users_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_venue_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_category_redshift| 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_date_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_event_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_listing_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | table | public.tickit_sales_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | schema | public | t 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND | salesshare | view | public.sales_data_summary_view |
L'esempio seguente mostra le unità di condivisione dati in uscita in un cluster producer.
SHOW DATASHARES LIKE 'sales%';
L'output è simile al seguente.
share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace -----------+--------------+-----------------+-------------------+------------+---------------------+----------------------+-----------+------------------+--------------------------------------- salesshare | 100 | dev | | OUTBOUND | 2020-12-09 02:27:08 | True | | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
Per ulteriori informazioni, consulta DESC DATASHARE e SHOW DATASHARES.
È possibile utilizzare anche SVV_DATASHARES, SVV_DATASHARE_CONSUMERS e SVV_DATASHARE_OBJECTS per visualizzare le unità di condivisione dati, gli oggetti all'interno dell'unità di condivisione dati e i consumer dell'unità di condivisione dati.
Eliminare le unità di condivisione dati. Ti consigliamo di non eliminare un AWS Data Exchange datashare condiviso con altri Account AWS utilizzando l'istruzione. DROP DATASHARE Tali account perderanno l'accesso all'unità di condivisione dati. Questa operazione è irreversibile. Ciò potrebbe violare i termini dell'offerta del prodotto Data in. AWS Data Exchange Se desideri eliminare un AWS Data Exchange datashare, consulta. DROPDATASHAREnote sull'utilizzo
Nell'esempio seguente viene rimossa una unità di condivisione dati denominata salesshare.
DROP DATASHARE salesshare; ERROR: Drop of ADX-managed datashare salesshare requires session variable datashare_break_glass_session_var to be set to value '620c871f890c49'
Per consentire l'eliminazione di un AWS Data Exchange datashare, imposta la variabile datashare_break_glass_session_var ed esegui nuovamente l'istruzione. DROP DATASHARE Se desideri eliminare un datashare, DROPDATASHAREnote sull'utilizzo consulta. AWS Data Exchange
Per eliminare le unità di condivisione dati è possibile utilizzare anche la console Amazon Redshift. Per ulteriori informazioni, consulta Eliminazione delle AWS Data Exchange condivisioni di dati create nel tuo account.
Utilizzare ALTER DATASHARE per rimuovere oggetti dai datashare in qualsiasi momento dal datashare. Utilizzare REVOKE USAGE ON per revocare le autorizzazioni sul datashare a determinati consumatori. Revoca le USAGE autorizzazioni sugli oggetti all'interno di un datashare e interrompe istantaneamente l'accesso a tutti i cluster di consumatori. L'elenco delle unità di condivisione dati e delle query dei metadati, ad esempio l'elenco dei database e delle tabelle, non restituisce gli oggetti condivisi dopo la revoca dell'accesso.
ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;
Per modificare le unità di condivisione dati è possibile utilizzare anche la console Amazon Redshift. Per ulteriori informazioni, consulta Modifica delle condivisioni AWS Data Exchange di dati.
Concedi o revoca dalle condivisioni di dati. GRANT USAGE AWS Data Exchange Non puoi concedere o revocare un datashare. GRANT USAGE AWS Data Exchange L'esempio seguente mostra un errore quando l'GRANTUSAGEautorizzazione viene concessa a un datashare che Account AWS gestisce. AWS Data Exchange
CREATE DATASHARE salesshare MANAGEDBY ADX;
GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '012345678910'; ERROR: Permission denied to add/remove consumer to/from datashare salesshare. Datashare consumers are managed by ADX.
Se sei un amministratore di un cluster di produttori, segui questi passaggi per creare e pubblicare un prodotto datashare sulla console: AWS Data Exchange
Una volta creato il AWS Data Exchange datashare, il produttore crea un nuovo set di dati, importa risorse, crea una revisione e crea e pubblica un nuovo prodotto.
Utilizzare la console Amazon Redshift per creare set di dati. Per ulteriori informazioni, consulta Creazione di set di dati su AWS Data Exchange.
Per ulteriori informazioni, consulta Fornitura di prodotti di dati su. AWS Data Exchange
Utilizzo delle condivisioni AWS Data Exchange di dati in qualità di consumatore
Con Amazon Redshift, puoi accedere e analizzare i set di dati AWS Data Exchange senza dover archiviare o gestire copie dei dati.
Se sei un consumatore, segui questi passaggi per scoprire prodotti di dati che contengono AWS Data Exchange condivisioni di dati e interrogare i dati di Amazon Redshift:
Sulla AWS Data Exchange console, scopri e sottoscrivi prodotti di dati che contengono datashare. AWS Data Exchange
Una volta avviato l'abbonamento, puoi accedere ai dati con licenza di Amazon Redshift importati come asset in set di dati che contengono condivisioni di dati. AWS Data Exchange
Sulla console Amazon Redshift, crea un cluster Amazon Redshift, se necessario.
Per informazioni su come creare un cluster, consultare Creazione di un cluster.
Elencare le unità di condivisione dati rese disponibili e visualizzare il contenuto delle unità di condivisione dati. Per ulteriori informazioni, consulta DESC DATASHARE e SHOW DATASHARES.
Nell'esempio seguente vengono visualizzate le informazioni relative alle unità di condivisione dati in ingresso di uno spazio dei nomi producer specificato. Quando lavori DESC DATASHARE come amministratore di cluster di consumatori, devi specificare l'NAMESPACEopzione ACCOUNT and per visualizzare le condivisioni di dati in entrata.
DESC DATASHARE salesshare of ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d'; producer_account | producer_namespace | share_type | share_name | object_type | object_name | include_new -------------------+--------------------------------------+------------+------------+-------------+---------------------------------+------------------ 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_users_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_venue_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_category_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_date_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_event_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_listing_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | table | public.tickit_sales_redshift | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | schema | public | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND | salesshare | view | public.sales_data_summary_view |
Solo gli utenti con privilegi avanzati per il cluster possono completare questa opzione. È inoltre possibile utilizzare SVV _ DATASHARES per visualizzare le condivisioni di dati e SVV _ DATASHARE _ per visualizzare gli oggetti all'interno del OBJECTS datashare.
L'esempio seguente mostra le unità di condivisione dati in uscita in un cluster producer.
SHOW DATASHARES LIKE 'sales%'; share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account | producer_namespace ------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+-------------------------------------- salesshare | | | | INBOUND | | t | | 123456789012 | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
Creare database locali che fanno riferimento alle unità di condivisione dati. È necessario specificare l'NAMESPACEopzione ACCOUNT and per creare database locali per i datashare. AWS Data Exchange Per ulteriori informazioni, consulta CREATE DATABASE.
CREATE DATABASE sales_db FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
Se desideri un controllo più granulare sull'accesso agli oggetti nel database locale, usa la WITH PERMISSIONS clausola durante la creazione del database. In tal modo puoi assegnare le autorizzazioni per gli oggetti del database nel passaggio 6.
CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
È possibile vedere i database creati dall'unità di condivisione dati eseguendo una query sulla vista SVV_REDSHIFT_DATABASES. Puoi connetterti direttamente a questi database oppure puoi connetterti a un database locale sul tuo cluster di consumatori ed eseguire una query tra database per interrogare i dati dai database del datashare. Non è possibile creare una unità di condivisione dati sugli oggetti di database creati da una unità di condivisione dati esistente. Tuttavia, è possibile copiare i dati in una tabella separata nel cluster consumer, eseguire qualsiasi elaborazione necessaria e quindi condividere i nuovi oggetti creati.
Per creare i database dalle unità di condivisione dati è possibile utilizzare anche la console Amazon Redshift. Per ulteriori informazioni, consulta Creazione di database da unità di condivisione dati.
(Facoltativo) Creare schemi esterni per fare riferimento e assegnare autorizzazioni granulari a schemi specifici nel database consumer importato nel cluster consumer. Per ulteriori informazioni, consulta CREATE EXTERNAL SCHEMA.
CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
Assegna ai ruoli o agli utenti nel cluster consumer le autorizzazioni per i database e i riferimenti allo schema creati dalle unità di condivisione dati in base alle esigenze. Per ulteriori informazioni, consulta GRANT o REVOKE.
GRANT USAGE ON DATABASE sales_db TO Bob;
GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
Se hai creato il database senza WITHPERMISSIONS, puoi solo assegnare le autorizzazioni sull'intero database creato dal datashare ai tuoi utenti e ruoli. In alcuni casi, sono necessari controlli a grana fine su un sottoinsieme di oggetti di database creati dall'unità di condivisione dati. In tal caso, è possibile creare un riferimento allo schema esterno che punti a schemi specifici nell'unità di condivisione dati (come descritto nel passaggio precedente) e fornire autorizzazioni granulari a livello di schema.
È inoltre possibile creare viste ad associazione tardiva sugli oggetti condivisi e utilizzarle per assegnare autorizzazioni granulari. È inoltre possibile considerare che i cluster producer creino ulteriori unità di condivisione dati con la granularità richiesta. Puoi definire tutti i riferimenti allo schema di cui hai bisogno per il database creato dall'unità di condivisione dati.
Se il database è stato creato WITH PERMISSIONS nel passaggio 4, è necessario assegnare autorizzazioni a livello di oggetto per gli oggetti nel database condiviso. Un utente con la sola USAGE autorizzazione non può accedere a nessun oggetto in un database creato con WITH PERMISSIONS finché non riceve autorizzazioni aggiuntive a livello di oggetto.
GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
Eseguire una query sui dati negli oggetti condivisi nelle unità di condivisione dati.
Gli utenti e i ruoli con autorizzazioni per i database consumer e gli schemi nei cluster consumer possono esplorare e navigare tra i metadati di qualsiasi oggetto condiviso. Possono inoltre esplorare e navigare tra oggetti locali in un cluster consumer. A tale scopo, usano i nostri ODBC driver, i SHOW comandi JDBC o le viste SVV _ ALL e SVV _. REDSHIFT
I cluster producer potrebbero avere molti schemi nel database, nelle tabelle e nelle viste all'interno di ogni schema. Gli utenti sul lato consumer possono vedere solo il sottoinsieme di oggetti che sono resi disponibili attraverso l'unità di condivisione dati. Questi utenti non possono visualizzare gli interi metadati dal cluster producer. Questo approccio consente di fornire un controllo granulare della sicurezza dei metadati con la condivisione dei dati.
È possibile continuare a connettersi ai database locali nel cluster. Ma ora, è anche possibile leggere dai database e dagli schemi creati dall'unità di condivisione dati utilizzando la notazione database.schema.tabella in tre parti. È possibile eseguire query che si estendono su tutti i database visibili. Questi possono essere database locali sul cluster o database creati dalle unità di condivisione dati. In alternativa, è possibile connettersi direttamente a questi database di consumatori ed eseguire query sugli oggetti condivisi con notazione parziale.
È possibile accedere ai dati mediante la qualifica completa. Per ulteriori informazioni, consulta Esempi di interrogazioni su più database.
SELECT * FROM sales_db.public.tickit_sales_redshift ORDER BY 1,2 LIMIT 5; salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission | saletime ---------+--------+----------+---------+---------+--------+---------+-----------+------------+--------------------- 1 | 1 | 36861 | 21191 | 7872 | 1875 | 4 | 728.00 | 109.20 | 2008-02-18 02:36:48 2 | 4 | 8117 | 11498 | 4337 | 1983 | 2 | 76.00 | 11.40 | 2008-06-06 05:00:16 3 | 5 | 1616 | 17433 | 8647 | 1983 | 2 | 350.00 | 52.50 | 2008-06-06 08:26:17 4 | 5 | 1616 | 19715 | 8647 | 1986 | 1 | 175.00 | 26.25 | 2008-06-09 08:38:52 5 | 6 | 47402 | 14115 | 8240 | 2069 | 2 | 154.00 | 23.10 | 2008-08-31 09:17:02
È possibile utilizzare solo SELECT istruzioni su oggetti condivisi. Tuttavia, è possibile creare tabelle nel cluster consumer eseguendo una query sui dati degli oggetti condivisi in un database locale diverso.
Oltre alle query, i consumer possono creare viste su oggetti condivisi. Sono supportate solo le viste ad associazione tardiva o le viste materializzate. Amazon Redshift non supporta le viste regolari sui dati condivisi. Le viste create dai consumer possono estendersi su più database locali o database creati dalle unità di condivisione dati. Per ulteriori informazioni, consulta CREATE VIEW.
// Connect to a local cluster database // Create a view on shared objects and access it. CREATE VIEW sales_data AS SELECT * FROM sales_db.public.tickit_sales_redshift WITH NO SCHEMA BINDING; SELECT * FROM sales_data;