Salta al contenuto

Come posso pianificare una query in Amazon Athena?

4 minuti di lettura
0

Desidero pianificare query in Amazon Athena.

Breve descrizione

Le query pianificate hanno molti casi d'uso, come la creazione di report periodici o il caricamento di nuove partizioni a intervalli regolari. Scegli uno dei seguenti modi per pianificare query in Athena, in base al caso d'uso:

  • Crea una funzione AWS Lambda per pianificare la query, quindi crea una regola in Amazon EventBridge per pianificare la funzione Lambda.
  • Utilizza AWS Step Functions per creare una pipeline ETL che utilizza Athena.
  • Su una macchina Linux, utilizza crontab per pianificare la query.
  • Utilizza un processo shell Python in AWS Glue.

Risoluzione

Utilizza una funzione Lambda e una regola EventBridge per pianificare una query in Athena

Puoi utilizzare una funzione Lambda e una regola EventBridge per pianificare una query in Athena. A tal fine, completa i seguenti passaggi:

  1. Crea un ruolo di servizio AWS Identity and Access Management (AWS 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 le autorizzazioni 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 di 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.
    Per 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 seleziona 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 bus di eventi, seleziona il router di eventi predefinito di AWS.

  14. Nella sezione Seleziona destinazioni, esegui queste operazioni:
    In Destinazione, seleziona Funzione Lambda nell'elenco a discesa.
    In Funzione, seleziona il nome della funzione Lambda nell'elenco a discesa.

  15. Scegli Crea.

Nota: sono previste quote per il numero consentito di chiamate all'API Athena per ogni account. Assicurati di rimanere entro le quote se desideri pianificare più query. Per ulteriori informazioni, consulta Quote di chiamate API per account.

Crea una pipeline ETL con Step Functions

Se utilizzi Step Functions per creare una pipeline ETL che include Athena, puoi utilizzare Step Functions per pianificare una query Athena.

Utilizza crontab da una macchina Linux

Se utilizzi una macchina Linux, puoi utilizzare crontab per pianificare una query in Athena.

Utilizza un processo shell Python in AWS Glue

Utilizza un processo shell Python in AWS Glue per eseguire la query in Athena utilizzando l'API Athena Boto3. Quindi definisci una pianificazione per il processo in AWS Glue.

Informazioni correlate

Tutorial: creare una regola EventBridge pianificata per le funzioni AWS Lambda

Creazione di una regola che viene eseguita secondo una pianificazione in Amazon EventBridge

AWS UFFICIALEAggiornata 2 anni fa