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à.
Accedi, esegui query e unisciti a tabelle Amazon DynamoDB utilizzando Athena
Creato da Moinul Al-Mamun () AWS
Ambiente: produzione | Tecnologie: analisi; database; senza server | AWSservizi: Amazon Athena; Amazon DynamoDB; Lambda; Amazon S3 AWS |
Riepilogo
Questo modello mostra come configurare una connessione tra Amazon Athena e Amazon DynamoDB utilizzando il connettore Amazon Athena DynamoDB. Il connettore utilizza una funzione AWS Lambda per interrogare i dati in DynamoDB. Non è necessario scrivere alcun codice per configurare la connessione. Una volta stabilita la connessione, è possibile accedere e analizzare rapidamente le tabelle DynamoDB utilizzando Athena Federated Query per eseguire comandi da Athena. SQL Puoi anche unire una o più tabelle DynamoDB tra loro o con altre fonti di dati, come Amazon Redshift o Amazon Aurora.
Prerequisiti e limitazioni
Prerequisiti
Un AWS account attivo con autorizzazioni per gestire tabelle DynamoDB, origini dati Athena, Lambda e ruoli Identity AWS and Access Management () IAM
Un bucket Amazon Simple Storage Service (Amazon S3) in cui Athena può archiviare i risultati delle query
Un bucket S3 in cui il connettore Athena DynamoDB può salvare i dati a breve termine
Una AWS regione che supporta la versione 2 del motore Athena
IAMautorizzazioni per accedere ad Athena e ai bucket S3 richiesti
Connettore Amazon Athena DynamoDB
, installato
Limitazioni
L'interrogazione delle tabelle DynamoDB comporta un costo. Le dimensioni delle tabelle che superano alcuni gigabyte (GBs) possono comportare costi elevati. Si consiglia di considerare i costi prima di eseguire qualsiasi operazione sull'intera tabella. SCAN Per ulteriori informazioni, consulta Prezzi di Amazon DynamoDBSELECT * FROM table1 LIMIT 10
). Inoltre, prima di eseguire una query JOIN o GROUP BY in un ambiente di produzione, considerate le dimensioni delle tabelle. Se le tue tabelle sono troppo grandi, prendi in considerazione opzioni alternative come la migrazione della tabella su Amazon
Architettura
Il diagramma seguente mostra come un utente può eseguire una SQL query su una tabella DynamoDB da Athena.
Il diagramma mostra il flusso di lavoro seguente:
Per interrogare una tabella DynamoDB, un utente esegue una SQL query da Athena.
Athena avvia una funzione Lambda.
La funzione Lambda interroga i dati richiesti nella tabella DynamoDB.
DynamoDB restituisce i dati richiesti alla funzione Lambda. Quindi, la funzione trasferisce i risultati della query all'utente tramite Athena.
La funzione Lambda memorizza i dati nel bucket S3.
Stack tecnologico
Amazon Athena
Amazon DynamoDB
Amazon S3
AWSLambda
Strumenti
Amazon Athena è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon S3 utilizzando standard. SQL
Amazon Athena DynamoDB Connector
è uno strumento AWS che consente ad Athena di connettersi a DynamoDB e accedere alle tabelle tramite query. SQL Amazon DynamoDB è un servizio di database SQL No completamente gestito che offre prestazioni veloci, prevedibili e scalabili.
AWSLambda è un servizio di elaborazione che ti aiuta a eseguire il codice senza dover effettuare il provisioning o gestire i server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di elaborazione che utilizzi.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea la prima tabella di esempio. |
| Developer |
Inserisci dati di esempio nella prima tabella. |
| Developer |
Create la seconda tabella di esempio. |
| Developer |
Inserisci dati di esempio nella seconda tabella. |
| Developer |
Attività | Descrizione | Competenze richieste |
---|---|---|
Configura il connettore di origine dati. | Crea un'origine dati per DynamoDB, quindi crea una funzione Lambda per connetterti a quell'origine dati.
| Developer |
Verifica che la funzione Lambda possa accedere allo spill bucket S3. |
Se riscontri errori, consulta la sezione Informazioni aggiuntive di questo schema come guida. | Developer |
Attività | Descrizione | Competenze richieste |
---|---|---|
Interroga le tabelle DynamoDB. |
| Developer |
Unisci le due tabelle DynamoDB. | DynamoDB non è un archivio dati e SQL non supporta SQL l'operazione di join. Di conseguenza, è necessario eseguire un'operazione di join su due tabelle DynamoDB:
| Developer |
Risorse correlate
Interroga qualsiasi fonte di dati con la nuova query federata di Amazon Athena
(AWSBig Data Blog) Riferimento alla versione del motore Athena (Athena User Guide)
Semplifica l'estrazione e l'analisi dei dati di Amazon DynamoDB utilizzando AWS Glue e Amazon Athena
(Database Blog) AWS
Informazioni aggiuntive
Se esegui una query in Athena con spill_bucket
il {bucket_name}/folder_name/
formato, puoi ricevere il seguente messaggio di errore:
"GENERIC_USER_ERROR: Encountered an exception[java.lang.RuntimeException] from your LambdaFunction[arn:aws:lambda:us-east-1:xxxxxx:function:testdynamodb] executed in context[retrieving meta-data] with message[You do NOT own the spill bucket with the name: s3://amzn-s3-demo-bucket/athena_dynamodb_spill_data/] This query ran against the "default" database, unless qualified by the query. Please post the error message on our forum or contact customer support with Query Id: [query-id]"
Per risolvere questo errore, aggiorna la variabile di ambiente della funzione Lambda spill_bucket
a{bucket_name_only}
, quindi aggiorna la seguente IAM politica Lambda per l'accesso alla scrittura nel bucket:
{ "Action": [ "s3:GetObject", "s3:ListBucket", "s3:GetBucketLocation", "s3:GetObjectVersion", "s3:PutObject", "s3:PutObjectAcl", "s3:GetLifecycleConfiguration", "s3:PutLifecycleConfiguration", "s3:DeleteObject" ], "Resource": [ "arn:aws:s3:::spill_bucket", "arn:aws:s3:::spill_bucket/*" ], "Effect": "Allow" }
In alternativa, puoi rimuovere il connettore di origine dati Athena creato in precedenza e ricrearlo utilizzando only for. {bucket_name}
spill_bucket