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)
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 SQL da Athena. 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 account AWS attivo con autorizzazioni per gestire tabelle DynamoDB, sorgenti di dati Athena, Lambda e ruoli AWS Identity 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 regione AWS che supporta la versione 2 del motore Athena
Autorizzazioni IAM 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 SCAN completa della tabella. 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 query SQL su una tabella DynamoDB da Athena.

Il diagramma mostra il flusso di lavoro seguente:
Per interrogare una tabella DynamoDB, un utente esegue una query SQL 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
AWS Lambda
Strumenti
Amazon Athena è un servizio di query interattivo che ti aiuta ad analizzare i dati direttamente in Amazon S3 utilizzando SQL standard.
Amazon Athena DynamoDB Connector
è uno strumento AWS che consente ad Athena di connettersi a DynamoDB e accedere alle tabelle utilizzando query SQL. Amazon DynamoDB è un servizio di database NoSQL interamente gestito che offre prestazioni elevate, prevedibili e scalabili.
AWS Lambda è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo 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 è un data store NoSQL e non supporta l'operazione di join SQL. Di conseguenza, è necessario eseguire un'operazione di join su due tabelle DynamoDB:
| Developer |
Risorse correlate
Connettore Amazon Athena DynamoDB (
AWS Labs) Interroga qualsiasi fonte di dati con la nuova query federata di Amazon Athena
(AWS Big 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 (AWS
Database Blog)
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 policy Lambda IAM per l'accesso in scrittura ai 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