Abilita le query federate tra più account - 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à.

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, vedereAccesso 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ù server Regioni AWS non è supportato.

Autorizzazioni richieste

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

    1. 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" } ] }
    2. 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/*" ] } ] }
    3. 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. }
  • Affinché l'Account A condivida il connettore con l'Account B, l'Account B deve creare un ruolo chiamato AthenaCrossAccountCreate-account-A-id che l'Account A assume chiamando l' AWS azione Security Token Service. AssumeRoleAPI

    La seguente policy, che consente l'operazione CreateDataCatalog, deve essere creata nell'account B e aggiunta al ruolo AthenaCrossAccountCreate-account-A-id creato dall'account B per l'account A.

    { "Effect": "Allow", "Action": "athena:CreateDataCatalog", "Resource": "arn:aws:athena:*:account-B-id:datacatalog/*" }

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
  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. Scegli Data sources (Origini dati).

  4. Sulla pagina Data sources (Origini dati), scegli il collegamento del connettore da condividere.

  5. Nella pagina dei dettagli relativa a un'origine dati Lambda, scegli l'opzione Share (Condividi) nell'angolo in alto a destra.

    Scegli Condividi.
  6. Nella sezione Condividi Lambda-name con un'altra finestra di dialogo relativa all'account, 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).

    Inserisci il nome e l' Account AWS ID della fonte di dati.
  7. 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
  1. Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/.

  2. Se si utilizza la nuova console e il pannello di navigazione non è visibile, scegli il menu di espansione a sinistra.

  3. Scegli Data sources (Origini dati).

  4. Nella scheda Data sources (Origini dati), scegli Connect data source (Connetti origine dati).

    Scegliere Connect data source (Connetti origine dati).
  5. Scegli Custom or shared connector (Connettore personalizzato o condiviso).

    Scegli Custom or shared connector (Connettore personalizzato o condiviso).
  6. Nella sezione Lambda function (Funzione Lambda), assicurarsi che l'opzione Use an existing Lambda function (Utilizza una funzione Lambda esistente) sia selezionata.

    Specificare la ARN Lambda di un altro account.
  7. Per Scegli o inserisci una funzione Lambda, inserisci la ARN Lambda dell'account A.

  8. Scegliere Connect data source (Connetti 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.