Abilitare le 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à.

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 hai registrato la tua fonte di dati conAWS Glue Data Catalog, utilizza il modello di funzionalità e autorizzazioni AWS Glue Data Catalog multiaccount. 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 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, vedereConfigura l'accesso tra più account ai cataloghi di 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

Per configurare le autorizzazioni richieste, è necessario eseguire azioni sia nell'Account A () che nell'Account B (444455556666). 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.

  1. La seguente policy concede a Lambda le autorizzazioni di richiamo funzione all'account B su una funzione Lambda nell'account A.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "CrossAccountInvocationStatement", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:user/username" ] }, "Action": "lambda:InvokeFunction", "Resource": "arn:aws:lambda:us-east-1:444455556666:function:lambda-function-name" } ] }
  2. La seguente policy consente l'accesso del bucket spill al principale nell'account B.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::111122223333: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. }

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-account-A-id che l'Account A assume chiamando l'AWSazione API Security Token Service. AssumeRole

  1. Utilizza la console IAM o AWS CLI per creare il AthenaCrossAccountCreate-account-A-id ruolo come ruolo personalizzato in termini di policy di fiducia. Una policy di fiducia personalizzata delega l'accesso e consente ad altri di eseguire azioni sul tuo AWS account. Per i passaggi, consultare Creare un ruolo utilizzando criteri di attendibilità personalizzati nella Guida per l'utente IAM.

    La relazione di attendibilità dovrebbe avere un oggetto principale in cui la chiave è AWS e il valore è l'ARN dell’account A, come nell'esempio seguente.

    ... "Principal": { "AWS": ["arn:aws:iam::account-A-id:user/username"] }, ...
  2. 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/*" }
  3. Aggiungere il criterio che consente l'azione CreateDataCatalog al ruolo AthenaCrossAccountCreate-account-A-id creato utilizzando l'account B.

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
  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. Scegliere Origini dati e cataloghi.

  4. Sulla pagina Origini dati e cataloghi, scegliere il collegamento del connettore da condividere.

  5. Nella pagina dei dettagli relativa a un'origine dati Lambda, dal menu Azioni nell'angolo in alto a destra, selezionare Condividi.

  6. 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).

  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. È 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
  1. Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/.

  2. Se il pannello di navigazione non è visibile, scegliere il menu di espansione a sinistra.

  3. Scegliere Origini dati e cataloghi.

  4. Nella pagina Origini dati e cataloghi scegliere Crea origine dati.

  5. Nella pagina Scegli un'origine dati, selezionare Connettore personalizzato o condiviso.

  6. Scegli Next (Successivo).

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

  8. Scegli Next (Successivo).

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