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à.
Abilita le query federate tra più 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.
In qualità di amministratore dei dati, puoi abilitare le query federate tra account condividendo il connettore dati con l'account di un analista di dati o, come analista di dati, utilizzando una Lambda condivisa di un amministratore di dati da aggiungere ARN 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 funzionalità non è disponibile per il tipo di origine dati. AWS Glue Data Catalog Per informazioni sull'accesso a AWS Glue Data Catalog s da più account, vedereConfigurare l'accesso tra account a AWS Glue cataloghi di dati.
-
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ù server Regioni AWS non è supportato.
Autorizzazioni richieste
Per configurare le autorizzazioni richieste, è necessario intraprendere azioni sia nell'Account A che nell'Account B.
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.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "CrossAccountInvocationStatement", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::
account-B-id
:user/username
"] }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:aws-region
:account-A-id
:function:lambda-function-name
" } ] } -
La seguente policy consente l'accesso del bucket spill al principale nell'account B.
{ "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::
account-B-id
:user/username
"] }, "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::spill-bucket
", "arn:aws:s3:::spill-bucket
/*" ] } ] } -
Se la funzione Lambda crittografa lo spill bucket con una AWS KMS chiave anziché con la crittografia predefinita offerta dalla federazioneSDK, la politica AWS KMS chiave nell'Account A deve concedere l'accesso all'utente nell'Account B, come nell'esempio seguente.
{ "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, l'Account B deve creare un ruolo chiamato AthenaCrossAccountCreate-
che l'Account A assume chiamando l'AssumeRoleAPIazione AWS Security Token Service.account-A-id
-
Utilizza la IAM console o il AWS CLI per creare il
AthenaCrossAccountCreate-
ruolo come ruolo personalizzato in materia di politica di fiducia. Una politica di fiducia personalizzata delega l'accesso e consente ad altri di eseguire azioni nel tuo AWS account. Per i passaggi, consulta Creare un ruolo utilizzando politiche di fiducia personalizzate nella Guida per l'IAMutente.account-A-id
La relazione di fiducia dovrebbe avere un oggetto principale in cui la chiave
AWS
e il valore sia ARN l'account A, come nell'esempio seguente.... "Principal": { "AWS": ["arn:aws:iam::
account-A-id
:user/username
"] }, ... -
Inoltre, nell'Account B, crea una politica come la seguente che consenta l'
CreateDataCatalog
azione.{ "Effect": "Allow", "Action": "athena:CreateDataCatalog", "Resource": "arn:aws:athena:*:
account-B-id
:datacatalog/*" } -
Aggiungi la politica che consente l'
CreateDataCatalog
azione alAthenaCrossAccountCreate-
ruolo che hai 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 Data sources (Origini dati) nella console Athena per condividere un connettore dati nel tuo 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.
Per condividere un'origine dati Lambda nell'account A con l'account B
Apri 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.
-
Scegli Data sources (Origini dati).
-
Sulla pagina Data sources (Origini dati), scegli il collegamento del connettore da condividere.
-
Nella pagina dei dettagli di un'origine dati Lambda, dal menu Azioni nell'angolo in alto a destra, scegli Condividi.
-
Nella sezione Condividi
Lambda-name
con un altro account? finestra di dialogo, inserisci 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 da un amministratore ARN di dati un connettore da aggiungere al tuo account. Puoi utilizzare la pagina Origini dati della console Athena per aggiungere la Lambda ARN fornita dall'amministratore al tuo account.
Per aggiungere la Lambda ARN di un connettore dati condiviso al tuo account
Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/
. -
Se il pannello di navigazione non è visibile, scegli il menu di espansione a sinistra.
-
Scegli Data sources (Origini dati).
-
Nella pagina Data sources (Origini dati), scegli Create data source (Crea origine dati).
-
Nella pagina Scegli un'origine dati, scegli 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, inserisci la ARN Lambda dell'account A.
-
Scegli Next (Successivo).
-
Nella pagina Rivedi e crea, scegli 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.