Configurare l'accesso tra account a AWS Glue cataloghi di dati - 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à.

Configurare l'accesso tra account a AWS Glue cataloghi di dati

Puoi utilizzare l'account multiplo di Athena AWS Glue funzione di catalogo per registrare un AWS Glue catalogo da un account diverso dal proprio. Dopo aver configurato le IAM autorizzazioni richieste per AWS Glue e registra il catalogo come DataCatalogrisorsa Athena, puoi usare Athena per eseguire query su più 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 tra account diversi in AWS Glue, vedi Concessione dell'accesso su più account nella AWS Glue Guida per gli sviluppatori.

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, Athena cross-account AWS Glue l'accesso al catalogo presenta le seguenti limitazioni:

  • La funzionalità è disponibile solo in Regioni AWS dove è 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 Cambia 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, CREATE VIEW dichiarazioni che includono un account multiplo AWS Glue il catalogo non è supportato.

  • Cataloghi crittografati utilizzando AWS le chiavi gestite non possono essere interrogate 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 le chiavi gestite dai clienti e AWS chiavi gestite, vedere Chiavi del cliente e AWS chiavi in AWS Key Management Service Guida per gli sviluppatori.

Inizia a usare

Nello scenario seguente, l'account «mutuatario» (6666) desidera eseguire una SELECT query che si riferisce a 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 consentire all'account del mutuatario l'accesso all'account del proprietario AWS Glue risorse, sia dal lato del mutuatario che da parte del proprietario. L'esempio concede l'accesso al database tpch1000 e alla tabella customer. Modifica questi nomi di esempio in base alle proprie esigenze.

Fase 1a: Creare un ruolo di mutuatario con una politica di accesso a quella del proprietario AWS Glue risorse

Creare un account di mutuatario con una politica di accesso all'account del proprietario AWS Glue risorse, puoi usare il AWS Identity and Access Management (IAM) console o IAMAPI. Le seguenti procedure utilizzano la IAM console.

Per creare un ruolo e una politica del mutuatario per accedere all'account del proprietario AWS Glue risorse
  1. Accedi alla IAM console https://console.aws.amazon.com/iam/dall'account del mutuatario.

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

  3. Scegli Create Policy (Crea policy).

  4. Per Policy editor, scegli. JSON

  5. Nell'editor delle politiche, inserisci la seguente politica, quindi modificala in base alle tue esigenze:

    { "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, in Nome della politica, inserisci un nome per la politica (ad esempio,CrossGluePolicyForBorrowerRole).

  8. Scegli Create Policy (Crea policy).

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

  10. Selezionare Create role (Crea ruolo).

  11. Nella pagina Seleziona entità attendibile, scegli Account AWS, quindi scegli Avanti.

  12. Nella pagina Aggiungi autorizzazioni, inserisci il nome della politica che hai creato nella casella di ricerca (ad esempio,CrossGluePolicyForBorrowerRole).

  13. Seleziona la casella di controllo accanto al nome della politica, quindi scegli Avanti.

  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. Scegliere Crea ruolo.

Fase 1b: Creare una politica proprietaria da concedere AWS Glue accesso al mutuatario

Concedere AWS Glue accesso dall'account del proprietario (9999) al ruolo del mutuatario, è possibile utilizzare il AWS Glue console o AWS Glue PutResourcePolicyAPIoperazione. La procedura seguente utilizza il AWS Glue console.

Concedere AWS Glue accesso al conto del mutuatario da parte del proprietario
  1. Accedi al AWS Glue console all'indirizzo 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. In rolename, 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.

    { "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" ] } ] }

Al termine, si consiglia di utilizzare il AWS Glue APIper effettuare alcune chiamate di prova tra più account per confermare che le autorizzazioni siano configurate come previsto.

Fase 2: Il mutuatario registra il AWS Glue Data Catalog che appartiene all'account del proprietario

La procedura seguente mostra come utilizzare la console Athena per configurare AWS Glue Data Catalog nell'account Amazon Web Services proprietario come fonte di dati. Per informazioni sull'utilizzo API delle operazioni anziché della console per registrare il catalogo, consulta(Facoltativo) Utilizzate il API per registrare un Athena Data Catalog che appartiene all'account del proprietario.

Per registrare un AWS Glue Data Catalog appartenente 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 i dettagli dell'origine dati, in AWS Glue Data Catalogsezione, per Scegli un AWS Glue Data Catalog, scegli AWS Glue Data Catalog in un altro account.

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

    • Nome dell'origine dati: inserisci il nome che desideri utilizzare nelle tue SQL query per fare riferimento al catalogo dati dell'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 Tag: risorse 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. Scegli Data sources (Origini dati). 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 richiesta che fa riferimento al catalogo utilizzando il catalog.database.table sintassi, 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) Configura autorizzazioni Amazon S3 aggiuntive

  • Se l'account del mutuatario utilizza una query Athena per scrivere nuovi dati in una tabella nell'account del 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 sugli oggetti di conseguenza come passaggio aggiuntivo.

  • Alcune DDL operazioni su più account MSCK REPAIR TABLE richiedono, ad esempio, le autorizzazioni di Amazon S3. Ad esempio, se l'account del mutuatario sta eseguendo un'MSCK REPAIRoperazione su più account su una tabella dell'account del proprietario i cui dati sono contenuti in un bucket S3 dell'account proprietario, tale bucket deve concedere le autorizzazioni al ruolo assunto dal mutuatario affinché la query abbia esito positivo.

Per informazioni sulla concessione delle autorizzazioni per i bucket, vedi Come posso impostare le autorizzazioni per i bucket? ACL nella Guida per l'utente di Amazon Simple Storage Service.

(Facoltativo) Usa un catalogo in modo dinamico

In alcuni casi potresti voler eseguire rapidamente dei test su più account AWS Glue catalogo senza la fase preliminare di registrazione. Puoi eseguire in modo dinamico query tra account senza creare l'oggetto DataCatalog risorsa se le autorizzazioni richieste e Amazon IAM S3 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>, dov'è il <arn> AWS Glue Data Catalog ARNche vuoi usare. Nell'esempio, Athena utilizza questa sintassi per puntare dinamicamente all'account di 9999 AWS Glue catalogo di dati come se avessi creato separatamente un DataCatalog oggetto per esso.

Note per l'utilizzo di cataloghi dinamici

Quando utilizzi i cataloghi dinamici, ricorda i seguenti punti.

  • L'uso di un catalogo dinamico richiede le IAM autorizzazioni normalmente utilizzate per le operazioni di Athena Data API Catalog. 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 utilizzate un catalogo dinamico in una DML query o in una vista, racchiudetelo tra virgolette doppie con escape (). \" Quando utilizzate un catalogo dinamico in una DDL query, racchiudetelo tra caratteri di spunta rovesciata (). `

(Facoltativo) Utilizzate il API per registrare un Athena Data Catalog che appartiene all'account del proprietario

Invece di utilizzare la console Athena come descritto nel passaggio 2, è possibile utilizzare API le operazioni 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 Athena. CreateDataCatalogAPI A seconda delle esigenze, potrebbe essere necessario accedere a API operazioni aggiuntive. Per ulteriori informazioni, consulta Policy di esempio del catalogo dati.

Il seguente organismo 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. ListDataCatalogsAPI

Risorse aggiuntive