Come posso pianificare una query su Amazon Athena?
Voglio pianificare le query in Amazon Athena.
Breve descrizione
La pianificazione delle query è utile in molti scenari, ad esempio per l'esecuzione di query di reporting periodiche o il caricamento di nuove partizioni a intervalli regolari. Ecco alcuni modi in cui puoi pianificare le query in Athena:
- Per pianificare la query crea una funzione AWS Lambda utilizzando l'SDK di tua scelta. Per ulteriori informazioni sui linguaggi di programmazione supportati da Lambda, consulta la pagina Domande frequenti su AWS Lambda. Quindi, crea una regola Amazon EventBridge per pianificare la funzione Lambda. Questo è il metodo spiegato nella Risoluzione.
- Se utilizzi Athena in una pipeline ETL, utilizza AWS Step Functions per creare la pipeline e pianificare la query.
- Su una macchina Linux, usa crontab per pianificare la query.
- Usa un processo shell di Python in AWS Glue per eseguire la query Athena utilizzando l'API Athena boto3. Quindi, definisci una pianificazione per il processo in AWS Glue.
Risoluzione
Segui questi passaggi per pianificare una query Athena utilizzando una funzione Lambda e una regola EventBridge:
1. Crea un ruolo di servizio AWS Identity and Access Management (IAM) per Lambda. Quindi, associa una policy che consenta l'accesso ad Athena, Amazon Simple Storage Service (Amazon S3) e Amazon CloudWatch Logs. Ad esempio, puoi aggiungere AmazonAthenaFullAccess e CloudWatchLogsFullAccess al ruolo. AmazonAthenaFullAccess consente l'accesso completo ad Athena e include autorizzazioni di base per Amazon S3. CloudWatchLogsFullAccess consente l'accesso completo a CloudWatch Logs.
2. Apri la console Lambda.
3. Scegli Crea funzione.
4. Assicurati che l'opzione Crea da zero sia selezionata, quindi configura le seguenti opzioni:
In Nome, inserisci un nome per la tua funzione.
In Runtime, scegli una delle opzioni di Python.
In Ruolo, scegli Utilizza un ruolo esistente, quindi scegli il ruolo IAM che hai creato nel passaggio 1.
5. Scegli Crea funzione.
6. Incolla il codice nella sezione Codice della funzione. L'esempio seguente utilizza Python 3.7. Sostituisci i seguenti valori nell'esempio:
default: il nome del database Athena
SELECT * FROM default.tb: la query che vuoi pianificare
s3://AWSDOC-EXAMPLE-BUCKET/: il bucket S3 per l'output della query
import boto3 # Query string to execute query = 'SELECT * FROM database.tb' # Database to execute the query against DATABASE = 'database' # Output location for query results output='s3://OUTPUTBUCKET/' def lambda_handler(event, context): # Initiate the Boto3 Client client = boto3.client('athena') # Start the query execution response = client.start_query_execution( QueryString=query, QueryExecutionContext={ 'Database': DATABASE }, ResultConfiguration={ 'OutputLocation': output } ) # Return response after starting the query execution return response
7. Scegli Distribuisci.
8. Apri la console Amazon EventBridge.
9. Nel pannello di navigazione, scegli Regole, quindi scegli Crea regola.
10. Inserisci un nome e una descrizione per la regola.
11. In Definisci il modello, seleziona Pianifica.
12. Seleziona Espressione cron, quindi inserisci un'espressione cron.
13. In Seleziona il bus di eventi, seleziona il bus di eventi predefinito di AWS.
14. Nella sezione Seleziona destinazioni, esegui le seguenti operazioni:
In Destinazione, seleziona la funzione Lambda dall'elenco a discesa. In Funzione, seleziona il nome della tua funzione Lambda dall'elenco a discesa.
15. Scegli Crea.
Se stai pianificando più query, tieni presente che sono previste delle quote per il numero di chiamate all'API Athena per ogni account. Per ulteriori informazioni, consulta la pagina Quote di chiamate API per account.
Informazioni correlate
Tutorial: pianificazione delle funzioni AWS Lambda mediante EventBridge
Creazione di una regola Amazon EventBridge eseguita in base a una pianificazione
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 2 mesi fa