Configura l'accesso tra più account ai cataloghi di dati AWS Glue - Amazon Athena

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

Configura l'accesso tra più account ai cataloghi di dati AWS Glue

Puoi utilizzare la funzionalità di AWS Glue catalogo per più account di Athena per registrare un AWS Glue catalogo da un account diverso dal tuo. Dopo aver configurato le autorizzazioni IAM richieste per AWS Glue e registrato il catalogo come risorsa Athena DataCatalog, puoi utilizzare Athena per eseguire query tra account. Per informazioni sull'utilizzo della console Athena per registrare un catalogo da un altro account, consulta la sezione Registrare un catalogo dati da un altro account.

Per ulteriori informazioni sull'accesso su più account inAWS Glue, consulta Garantire l'accesso su più account nella Guida per gli sviluppatori. AWS Glue

Prima di iniziare

Poiché questa funzionalità utilizza le DataCatalog risorse APIs e le funzionalità Athena esistenti per consentire l'accesso tra account diversi, ti consigliamo di leggere le seguenti risorse prima di iniziare:

Considerazioni e limitazioni

Attualmente, l'accesso al AWS Glue catalogo tra più account di Athena presenta le seguenti limitazioni:

  • La funzionalità è disponibile solo Regioni AWS laddove è supportata la versione 2 o successiva del motore Athena. Per ulteriori informazioni sulle versioni del motore Athena, consulta Controllo delle versioni del motore di Athena. Per aggiornare la versione del motore di un gruppo di lavoro, consulta Modificare le versioni del motore Athena.

  • Quando registri un altro account AWS Glue Data Catalog nel tuo account, crei una DataCatalog risorsa regionale collegata ai dati dell'altro account solo in quella particolare regione.

  • Attualmente le istruzioni CREATE VIEW che includono un catalogo AWS Glue multi-account non sono supportate.

  • I cataloghi crittografati utilizzando chiavi AWS gestite non possono essere interrogati su più account. Per i cataloghi da interrogare su più account, utilizza invece le chiavi gestite dai clienti (KMS_CMK). Per informazioni sulle differenze tra chiavi gestite dal cliente e AWS chiavi gestite, consulta Customer keys and AWS keys nella Developer Guide. AWS Key Management Service

Nozioni di base

Nello scenario seguente, l'account «mutuatario» (88886666) desidera eseguire una SELECT query che si riferisce al AWS Glue catalogo che appartiene all'account «proprietario» (9999), come nell'esempio seguente:

SELECT * FROM ownerCatalog.tpch1000.customer

Nella procedura seguente, i passaggi 1a e 1b mostrano come concedere all'account del mutuatario l'accesso alle AWS Glue risorse dell'account proprietario, sia dal lato del mutuatario che dal lato del proprietario. L'esempio concede l'accesso al database tpch1000 e alla tabella customer. Modifica questi nomi di esempio in base alle proprie esigenze.

Passaggio 1b: Creazione di un ruolo mutuatario con accesso alle risorse AWS Glue del proprietario

Per creare il ruolo dell'account mutuatario con una politica di accesso alle AWS Glue risorse dell'account proprietario, puoi utilizzare la console AWS Identity and Access Management (IAM) o l'API IAM. La seguente procedura usa la console IAM.

Concessione a un ruolo mutuatario dell'accesso alle risorse AWS Glue dell'account del proprietario
  1. Accedi alla console IAM https://console.aws.amazon.com/iam/dall'account del mutuatario.

  2. Nel riquadro di navigazione, espandi Gestione accesso, quindi seleziona Policy.

  3. Scegli Crea policy.

  4. Per Editor di policy, scegli JSON.

  5. Nella casella inserire la policy seguente, quindi modificarla in base alle proprie esigenze:

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "glue:*", "Resource": [ "arn:aws:glue:us-east-1:999999999999:catalog", "arn:aws:glue:us-east-1:999999999999:database/tpch1000", "arn:aws:glue:us-east-1:999999999999:table/tpch1000/customer" ] } ] }
  6. Scegli Next (Successivo).

  7. Nella pagina Rivedi e crea, per Nome policy inserisci un nome per la policy.

  8. Scegli Crea policy.

  9. Nel pannello di navigazione, seleziona Roles (Ruoli).

  10. Selezionare Create role (Crea ruolo).

  11. Sulla pagina Select engine (Seleziona motore), scegliere MySQL e quindi Next (Avanti).

  12. Nella pagina Aggiungi autorizzazioni, inserisci il nome della policy creata nella casella di ricerca (ad esempio, CrossGluePolicyForBorrowerRole).

  13. Selezionare la casella di controllo accanto alla nuova policy, quindi scegliere Next: Tags (Successivo: Tag).

  14. Nella pagina Name, review, and create (Nome, revisione e creazione), per Role name (Nome ruolo) inserisci un nome per il ruolo (ad esempio CrossGlueBorrowerRole).

  15. Scegli Crea ruolo.

Fase 1b: Creare una politica relativa al proprietario per concedere AWS Glue l'accesso al mutuatario

Per concedere AWS Glue l'accesso dall'account del proprietario (ISSIM9999) al ruolo del mutuatario, puoi utilizzare la console o il funzionamento dell'AWS GlueAPI. AWS Glue PutResourcePolicy La procedura seguente utilizza la console. AWS Glue

Per concedere AWS Glue l'accesso al conto del mutuatario da parte del proprietario
  1. Accedi alla AWS Glue console https://console.aws.amazon.com/glue/dall'account del proprietario.

  2. Nel riquadro di navigazione, espandi Data Catalog, quindi seleziona Impostazioni catalogo.

  3. Nel campo Autorizzazioni inserisci una policy simile alla seguente. Perrolename, inserisci il ruolo che il mutuatario ha creato nella Fase 1a (ad esempio,). CrossGlueBorrowerRole Se desideri aumentare l'ambito delle autorizzazioni, puoi utilizzare il carattere jolly * sia per il database che per i tipi di risorse della tabella.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::666666666666:user/username", "arn:aws:iam::666666666666:role/rolename" ] }, "Action": "glue:*", "Resource": [ "arn:aws:glue:us-east-1:999999999999:catalog", "arn:aws:glue:us-east-1:999999999999:database/tpch1000", "arn:aws:glue:us-east-1:999999999999:table/tpch1000/customer" ] } ] }

Dopo aver terminato, utilizza l'API AWS Glue per effettuare alcune chiamate di test tra gli account per confermare che le autorizzazioni sono configurate come previsto.

Fase 2: Il mutuatario registra l'account che appartiene al AWS Glue Data Catalog proprietario

La procedura seguente illustra come utilizzare la console Athena per configurare AWS Glue Data Catalog nell'account Amazon Web Services del proprietario come origine dei dati. Per informazioni sull'utilizzo delle operazioni API anziché sulla console per registrare il catalogo, consulta la sezione Utilizzo dell'API per registrare un catalogo dati Athena appartenente all'account del proprietario.

Per registrare un'AWS Glue Data Catalogappartenenza a un altro account
  1. Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/.

  2. Se il pannello di navigazione della console non è visibile, scegli il menu di espansione a sinistra.

    Scegli il menu di espansione.
  3. Espandi Amministrazione, quindi seleziona Origini dati.

  4. Nell'angolo in alto a destra, scegli Create data source (Crea origine dei dati).

  5. Nella pagina Scegli un'origine dati, per Origini dati, seleziona S3 - AWS Glue Data Catalog, quindi scegli Avanti.

  6. Nella pagina Inserisci dettagli origine dati, nella sezione AWS Glue Data Catalog, per Scegli un AWS Glue Data Catalog, seleziona AWS Glue Data Catalog in un altro account.

  7. Per Dataset details (Dettagli del set di dati), fornisci le seguenti informazioni:

    • Nome origine dati: inserisci il nome che desideri utilizzare nelle query SQL per fare riferimento al catalogo dati nell'altro account.

    • Descrizione — (Facoltativo) Inserisci una descrizione del catalogo dati nell'altro account.

    • ID catalogo — Inserisci l'ID account Amazon Web Services a 12 cifre dell'account a cui appartiene il catalogo dati. L'ID dell'account Amazon Web Services è l'ID del catalogo.

  8. (Facoltativo) Espandi Tag, quindi inserisci le coppie chiave-valore che intendi associare all'origine dati. Per ulteriori informazioni sui tag, consulta Assegnare tag alle risorse di Athena.

  9. Scegli Next (Successivo).

  10. Nella pagina Review and create (Rivedi e crea), esamina le informazioni inserite, quindi scegli Create data source (Crea origine dei dati). La pagina Data source details (Dettagli sull'origine dei dati) elenca i database e i tag per il catalogo dati registrato.

  11. Selezionare Data sources and catalogs. Il catalogo dati che hai registrato è elencato nella colonna Data source name (Nome origine dei dati).

  12. Per visualizzare o modificare le informazioni sul catalogo dati, scegli il catalogo, quindi scegli Actions (Operazioni), Edit (Modifica).

  13. Per eliminare il nuovo catalogo dati, scegli il catalogo, quindi scegli Actions (Operazioni), Delete (Elimina).

Passaggio 3: il mutuatario invia una query

Il mutuatario invia una query che fa riferimento al catalogo utilizzando il. catalog database. tablesintassi, come nell'esempio seguente:

SELECT * FROM ownerCatalog.tpch1000.customer

Invece di utilizzare la sintassi completa, il mutuatario può anche specificare il catalogo contestualmente passandolo tramite. QueryExecutionContext

(Facoltativo) Configurazione di autorizzazioni Amazon S3 aggiuntive

  • Se l'account mutuatario utilizza una query Athena per scrivere nuovi dati in una tabella nell'account proprietario, il proprietario non avrà automaticamente accesso a questi dati in Amazon S3, anche se la tabella esiste nell'account del proprietario. Questo perché il mutuatario è il proprietario dell'oggetto delle informazioni in Amazon S3, se non diversamente configurato. Per concedere al proprietario l'accesso ai dati, imposta le autorizzazioni per gli oggetti come passaggio aggiuntivo.

  • Alcune operazioni DDL tra account comeMSCK REPAIR TABLE richiedono autorizzazioni Amazon S3. Ad esempio, se l'account mutuatario sta eseguendo un'operazione MSCK REPAIR tra account su una tabella nell'account del proprietario che contiene i dati in un bucket S3 dell'account del proprietario, tale bucket deve concedere al ruolo assunto dal mutuatario le autorizzazioni affinché la query abbia esito positivo.

Per ulteriori informazioni sulla concessione di autorizzazioni per il bucket, consulta Come impostare le autorizzazioni ACL per un bucket nella Guida per l'utente di Amazon Simple Storage Service.

(Facoltativo) Usa un catalogo in modo dinamico

In alcuni casi potresti voler eseguire rapidamente test su un catalogo AWS Glue tra account senza la registrazione necessaria a tal fine. È possibile eseguire dinamicamente query tra account senza creare l'oggetto della risorsa DataCatalog se le autorizzazioni IAM e Amazon S3 richieste sono configurate correttamente come descritto in precedenza in questo documento.

Per fare riferimento esplicitamente a un catalogo senza registrazione, utilizza la sintassi nell'esempio seguente:

SELECT * FROM "glue:arn:aws:glue:us-east-1:999999999999:catalog".tpch1000.customer

Usa il formato"glue:<arn>", dove <arn> è l'ARN di AWS Glue Data Catalog che si desidera utilizzare. Nell'esempio, Athena utilizza questa sintassi per puntare dinamicamente al catalogo AWS Glue dati dell'account 9999 come se avessi creato separatamente un oggetto per esso. DataCatalog

Note per l'utilizzo di cataloghi dinamici

Quando utilizzi i cataloghi dinamici, ricorda i seguenti punti.

  • L'utilizzo di un catalogo dinamico richiede le autorizzazioni IAM normalmente utilizzate per le operazioni dell'API Athena Catalogo dati. La differenza principale è che il nome della risorsa Catalogo dati segue la convenzione di denominazione glue:*.

  • Il catalogo ARN deve appartenere alla stessa Regione in cui viene eseguita la query.

  • Quando si utilizza un catalogo dinamico in una query o visualizzazione DML, racchiuderlo con virgolette doppie basse (\"). Quando si utilizza un catalogo dinamico in una query DDL, circondalo con caratteri di backtick (`).

Utilizzo dell'API per registrare un catalogo dati Athena appartenente all'account del proprietario

Invece di utilizzare la console Athena come descritto nel passaggio 2, puoi utilizzare le operazioni API per registrare il catalogo dati che appartiene all'account del proprietario.

Il creatore della DataCatalogrisorsa Athena deve disporre delle autorizzazioni necessarie per eseguire l'operazione API Athena. CreateDataCatalog A seconda delle esigenze, potrebbe essere necessario accedere a operazioni API aggiuntive. Per ulteriori informazioni, consulta Policy di esempio del catalogo dati.

Il seguente ente di CreateDataCatalog richiesta registra un AWS Glue catalogo per l'accesso su più account:

# Example CreateDataCatalog request to register a cross-account Glue catalog: { "Description": "Cross-account Glue catalog", "Name": "ownerCatalog", "Parameters": {"catalog-id" : "999999999999" # Owner's account ID }, "Type": "GLUE" }

Il codice di esempio seguente utilizza un client Java per creare l'oggetto DataCatalog.

# Sample code to create the DataCatalog through Java client CreateDataCatalogRequest request = new CreateDataCatalogRequest() .withName("ownerCatalog") .withType(DataCatalogType.GLUE) .withParameters(ImmutableMap.of("catalog-id", "999999999999")); athenaClient.createDataCatalog(request);

Dopo questi passaggi, il mutuatario dovrebbe vedere ownerCatalog quando chiama l'operazione API. ListDataCatalogs

Risorse aggiuntive