Abilitare le query federate tra account
La query federata consente di eseguire query su origini dati diverse da Amazon S3 utilizzando connettori di origine dati implementati su AWS Lambda. La funzione di query federata tra account consente alla funzione Lambda e alle origini dati che devono essere sottoposte a query di trovarsi in account diversi.
Nota
Utilizzare questo metodo solo se non è stata registrata l’origine dati federata con AWS Glue Data Catalog. Se è stata registrata l’origine dati con AWS Glue Data Catalog, utilizzare il modello di funzionalità e autorizzazioni multi-account AWS Glue Data Catalog. Per ulteriori informazioni, consultare Concedere accesso a risorse multi-account nella Guida per l’utente AWS Glue.
In qualità di amministratore dei dati, puoi abilitare query federate tra più account condividendo il connettore dati con l'account di un analista di dati o, in qualità di analista di dati, utilizzando un ARN Lambda condiviso da un amministratore di dati da aggiungere al tuo account. Quando vengono apportate modifiche di configurazione a un connettore nell'account di origine, la configurazione aggiornata viene automaticamente applicata alle istanze condivise del connettore negli account di altri utenti.
Considerazioni e limitazioni
-
La funzione di query federata tra account è disponibile per i connettori dati di metastore non Hive che utilizzano un'origine dati basata su Lambda.
-
La funzione non è disponibile per il tipo di origine dati AWS Glue Data Catalog. Per ulteriori informazioni sull'accesso tra account ai AWS Glue Data Catalog, consulta Accesso tra account ai cataloghi dati AWS Glue.
-
Se la risposta della funzione Lambda del connettore supera il limite di dimensione della risposta Lambda di 6 MB, Athena crittografa, raggruppa e trasferisce automaticamente la risposta a un bucket Amazon S3 da te configurato. L'entità che esegue la query Athena deve avere accesso al luogo dello sversamento affinché Athena possa leggere i dati fuoriusciti. Ti consigliamo di impostare una policy del ciclo di vita di Amazon S3 per eliminare gli oggetti dal luogo di fuoriuscita, poiché i dati non sono necessari dopo il completamento della query.
-
L'utilizzo di query federate su più Regioni AWS non è supportato.
Autorizzazioni richieste
Per impostare le autorizzazioni richieste, è necessario intraprendere azioni sia nell'Account A (444455556666) che nell'Account B (111122223333).
Azioni per l'account A
Affinché l'account A dell'amministratore dei dati condivida una funzione Lambda con l'account B dell'analista dati, l'account B richiede la funzione di richiamo Lambda e l'accesso al bucket spill. Di conseguenza, l'account A dovrebbe aggiungere una policy basata sulle risorse alla funzione Lambda e un accesso principale al relativo bucket spill in Amazon S3.
-
La seguente policy concede a Lambda le autorizzazioni di richiamo funzione all'account B su una funzione Lambda nell'account A.
-
La seguente policy consente l'accesso del bucket spill al principale nell'account B.
-
Se la funzione Lambda sta crittografando il bucket spill con una chiave AWS KMS anziché con la crittografia di default offerta dall'SDK federativo, la policy di chiave AWS KMS nell'account A deve concedere l'accesso all'utente nell'account B, come nel seguente esempio.
{ "Sid": "Allow use of the key", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::account-B-id:user/username"] }, "Action": [ "kms:Decrypt" ], "Resource": "*" // Resource policy that gets placed on the KMS key. }
Azioni per l'account B
Affinché l'account A condivida il connettore con l'account B, quest'ultimo deve creare un ruolo chiamato AthenaCrossAccountCreate- che l'account A assume chiamando l'operazione API AssumeRole di AWS Security Token Service.account-A-id
-
Utilizzare la console IAM o AWS CLI per creare il ruolo
AthenaCrossAccountCreate-come ruolo personalizzato in termini di policy di attendibilità. Una policy di attendibilità personalizzata delega l'accesso e consente ad altri di eseguire operazioni nel proprio account AWS. Per i passaggi, consultare Creare un ruolo utilizzando criteri di attendibilità personalizzati nella Guida per l'utente IAM.account-A-idLa relazione di attendibilità dovrebbe avere un oggetto principale in cui la chiave è
AWSe il valore è l'ARN dell’account A, come nell'esempio seguente.... "Principal": { "AWS": ["arn:aws:iam::account-A-id:user/username"] }, ... -
Inoltre, nell'account B, creare un criterio come il seguente che consenta l'azione
CreateDataCatalog.{ "Effect": "Allow", "Action": "athena:CreateDataCatalog", "Resource": "arn:aws:athena:*:account-B-id:datacatalog/*" } -
Aggiungere il criterio che consente l'azione
CreateDataCatalogal ruoloAthenaCrossAccountCreate-creato utilizzando l'account B.account-A-id
Condivisione di un'origine dati nell'account A con l'account B
Dopo che le autorizzazioni sono state impostate, è possibile utilizzare la pagina Origini dati e cataloghi nella console Athena per condividere un connettore dati nel proprio account (account A) con un altro account (account B). L'account A mantiene il pieno controllo e la proprietà del connettore. Quando l'account A apporta modifiche di configurazione al connettore, la configurazione aggiornata si applica al connettore condiviso nell'account B.
Nota
È possibile condividere solo un'origine dati di tipo Lambda e non è possibile condividere origini dati che utilizzano connessioni AWS Glue. Per ulteriori informazioni, consulta Connettori di origine dati disponibili.
Per condividere un'origine dati Lambda nell'account A con l'account B
Aprire la console Athena all'indirizzo https://console.aws.amazon.com/athena/
. Se il pannello di navigazione della console non è visibile, scegli il menu di espansione a sinistra.
-
Scegliere Origini dati e cataloghi.
-
Sulla pagina Origini dati e cataloghi, scegliere il collegamento del connettore da condividere.
-
Nella pagina dei dettagli relativa a un'origine dati Lambda, dal menu Azioni nell'angolo in alto a destra, selezionare Condividi.
-
Nella finestra di dialogo Condividere
nome-Lambdacon un altro account, inserire le informazioni richieste.-
Per Data source name (Nome origine dati), inserisci il nome dell'origine dati copiata come desideri che appaia nell'altro account.
-
Per Account ID (ID account), inserisci l'ID dell'account con cui desideri condividere l'origine dati (in questo caso, l'account B).
-
-
Scegli Condividi. Il connettore dati condiviso specificato viene creato nell'account B. Le modifiche di configurazione apportate al connettore nell'account A si applicano al connettore nell'account B.
Aggiunta di un'origine dati condivisa dall'account A all'account B
In qualità di analista di dati, potresti ricevere l'ARN di un connettore da aggiungere al tuo account da un amministratore dei dati. È possibile utilizzare la pagina Origini dati e cataloghi della console Athena per aggiungere l'ARN Lambda fornito dall'amministratore al proprio account.
Per aggiungere l'ARN Lambda di un connettore dati condiviso al tuo account
Aprire la console Athena all'indirizzo https://console.aws.amazon.com/athena/
. -
Se il pannello di navigazione non è visibile, scegliere il menu di espansione a sinistra.
-
Scegliere Origini dati e cataloghi.
-
Nella pagina Origini dati e cataloghi scegliere Crea origine dati.
-
Nella pagina Scegli un'origine dati, selezionare Connettore personalizzato o condiviso.
-
Scegli Next (Successivo).
-
Nella pagina Inserisci i dettagli dell'origine dati, nella sezione Dettagli della connessione, per Seleziona o inserisci una funzione Lambda, inserire l'ARN Lambda dell'account A.
-
Scegli Next (Successivo).
-
Nella pagina Rivedi e crea scegliere Crea origine dati.
Risoluzione dei problemi
Se viene visualizzato un messaggio di errore che indica che l'account A non dispone delle autorizzazioni per assumere un ruolo nell'account B, assicurarsi che il nome del ruolo creato nell'account B sia scritto correttamente e che la policy appropriata sia collegata.