Abilitazione delle query federate tra 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à.

Abilitazione delle 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.

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 funzionalità non è disponibile per il tipo di origine AWS Glue Data Catalog dati. 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é la crittografia predefinita offerta dall'SDK di federazione, 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 API Security Token Service. AssumeRole

    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. Aprire 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 finestra di dialogo Share Lambda-name with another account (Condividi nome-Lambda con un altro 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 di una 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 l'ARN di un connettore da aggiungere al tuo account da un amministratore dei dati. Puoi utilizzare la pagina Data sources (Origini dati) della console Athena per aggiungere l'ARN Lambda fornito dall'amministratore al tuo account.

Per aggiungere l'ARN Lambda di un connettore dati condiviso al tuo account
  1. Aprire 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.

    Specifica dell'ARN Lambda di un altro account.
  7. Per Choose or enter a Lambda function (Scegli o inserisci una funzione Lambda), inserire l'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.