Configurare l'accesso multi-account a AWS Glue per Spark in Athena.
In questo argomento viene illustrato come configurare l'account consumer 666666666666 e l'account proprietario 999999999999 per l'accesso multi-account su AWS Glue. Quando gli account sono configurati, l'account consumer può eseguire query da Athena per Spark sui database e sulle tabelle AWS Glue del proprietario.
Passaggio 1: in AWS Glue, fornire l'accesso ai ruoli consumer
In AWS Glue il proprietario crea una policy che fornisce ai ruoli consumer l'accesso al catalogo dati AWS Glue del proprietario.
Come aggiungere una policy AWS Glue che consenta a un ruolo consumer di accedere al catalogo dati del proprietario
-
Accedi a Console di gestione AWS utilizzando l'account del proprietario del catalogo.
Apri la console AWS Glue all'indirizzo https://console.aws.amazon.com/glue/
. -
Nel riquadro di navigazione, espandi Data Catalog, quindi seleziona Impostazioni catalogo.
-
Nella pagina Impostazioni del catalogo dati, nella sezione Autorizzazioni, aggiungi una policy come quella che segue. Questa policy fornisce i ruoli per l'accesso dell'account consumer
666666666666al catalogo dati dell'account proprietario999999999999.
Passaggio 2: configurare l'account consumer per l'accesso
Nell'account consumer, crea una policy per consentire l'accesso a AWS Glue Data Catalog, ai database e alle tabelle del proprietario, quindi collegala a un ruolo. Nell'esempio seguente viene utilizzato l'account consumer 666666666666.
Come creare una policy AWS Glue di accesso al AWS Glue Data Catalog del proprietario
-
Accedi con l'account consumer a Console di gestione AWS.
Aprire la console IAM all'indirizzo https://console.aws.amazon.com/iam/
. -
Nel riquadro di navigazione, espandi Gestione accesso, quindi seleziona Policy.
-
Scegli Crea policy.
-
Nella pagina Specifica autorizzazioni, seleziona JSON.
-
Nell'Editor di policy, inserisci una dichiarazione JSON come la seguente che consenta operazioni AWS Glue sul catalogo di dati dell'account proprietario.
-
Scegli Next (Successivo).
-
Nella pagina Rivedi e crea, per Nome policy inserisci un nome per la policy.
-
Scegli Crea policy.
Successivamente, utilizzi la console IAM nell'account consumer per allegare la policy che hai appena creato a uno o più ruoli IAM che l'account consumer utilizzerà per accedere al catalogo dati del proprietario.
Come collegare la policy AWS Glue ai ruoli nell'account consumer
-
Nel pannello di navigazione della console IAM dell'account consumer, seleziona Ruoli.
-
Nella pagina Ruoli, individua il ruolo a cui intendi collegare la policy.
-
Seleziona Aggiungi autorizzazioni, quindi seleziona Collega policy.
-
Trova la policy che hai appena creato.
-
Seleziona la casella di controllo della policy, quindi seleziona Aggiungi autorizzazioni.
-
Ripeti i passaggi per aggiungere la policy agli altri ruoli che intendi utilizzare.
Passaggio 3: configurare una sessione e creazione di una query
In Athena Spark, nell'account del richiedente, utilizzando il ruolo specificato, crea una sessione per testare l'accesso creando un notebook o modificando una sessione corrente. Quando configuri le proprietà della sessione, specifica una delle seguenti opzioni:
-
Il separatore del catalogo AWS Glue: con questo approccio, includi l'ID dell'account proprietario nelle tue query. Utilizza questo metodo se intendi utilizzare la sessione per eseguire query sui cataloghi di dati di diversa proprietà.
-
L'ID del catalogo AWS Glue : con questo approccio, si interroga direttamente il database. Questo metodo è più comodo se intendi utilizzare la sessione per eseguire query sul catalogo dati di una sola proprietà.
Quando modificate le proprietà della sessione, aggiungete quanto segue:
{ "spark.hadoop.aws.glue.catalog.separator": "/" }
Quando esegui una query in una cella, utilizza una sintassi simile a quella dell'esempio seguente. Tieni presente che nella clausola FROM, l'ID del catalogo e il separatore sono obbligatori prima del nome del database.
df = spark.sql('SELECT requestip, uri, method, status FROM `999999999999/mydatabase`.cloudfront_logs LIMIT 5') df.show()
Quando modificate le proprietà della sessione, inserite la seguente proprietà. Sostituisci 999999999999 con l'ID dell'account del proprietario.
{ "spark.hadoop.hive.metastore.glue.catalogid": "999999999999" }
Quando esegui una query in una cella, utilizza una sintassi come la seguente: Si noti che nella clausola FROM, l'ID del catalogo e il separatore non sono richiesti prima del nome del database.
df = spark.sql('SELECT * FROM mydatabase.cloudfront_logs LIMIT 10') df.show()
Risorse aggiuntive
Accesso tra account ai cataloghi dati AWS Glue
Gestire autorizzazioni multi-account tramite AWS Glue e Lake Formation nella Guida per gli sviluppatori di AWS Lake Formation.
Configura l'accesso multi-account a un AWS Glue Data Catalog condiviso con Amazon Athena in AWS Prescriptive Guidance Patterns.