Direkt zum Inhalt

Wie kann ich eine Amazon-Athena-Abfrage planen?

Lesedauer: 3 Minute
0

Ich möchte Abfragen in Amazon Athena planen.

Kurzbeschreibung

Geplante Abfragen haben viele Anwendungsfälle, z. B. regelmäßige Berichte oder das Laden neuer Partitionen in regelmäßigen Intervallen. Wähle je nach Anwendungsfall eine der folgenden Methoden, um Abfragen in Athena zu planen:

  • Erstelle eine AWS-Lambda-Funktion, um die Abfrage zu planen, und erstelle dann eine Amazon-EventBridge-Regel, um die Lambda-Funktion zu planen.
  • Verwende AWS Step Functions, um eine ETL-Pipeline zu erstellen, die Athena verwendet.
  • Verwende auf einem Linux-Computer crontab, um die Abfrage zu planen.
  • Verwende einen AWS-Glue-Python-Shell-Auftrag.

Lösung

Verwendung einer Lambda-Funktion und einer EventBridge-Regel, um eine Athena-Abfrage zu planen

Du kannst eine Lambda-Funktion und eine EventBridge-Regel verwenden, um eine Athena-Abfrage zu planen. Gehe dazu wie folgt vor:

  1. Erstelle eine AWS Identity and Access Management (IAM)-Servicerolle für Lambda. Füge dann eine Richtlinie an, die den Zugriff auf Athena, Amazon Simple Storage Service (Amazon S3) und Amazon CloudWatch Logs ermöglicht. Beispielsweise kannst du der Rolle die Berechtigungen AmazonAthenaFullAccess and CloudWatchLogsFullAccess hinzufügen. AmazonAthenaFullAccess ermöglicht den vollen Zugriff auf Athena und beinhaltet grundlegende Berechtigungen für Amazon S3. CloudWatchLogsFullAccess ermöglicht den vollen Zugriff auf CloudWatch Logs.

  2. Öffne die Lambda-Konsole.

  3. Wähle Funktion erstellen.

  4. Vergewissere dich, dass Ohne Vorgabe erstellen ausgewählt ist, und konfiguriere dann die folgenden Optionen:
    Gib unter Name einen Namen für deine Funktion ein.
    Wähle für Laufzeit eine der Python-Optionen.
    Wähle für Rolle die Option Verwenden einer vorhandenen Rolle aus, und wähle dann die IAM-Rolle aus, die du in Schritt 1 erstellt hast.

  5. Wähle Funktion erstellen.

  6. Füge deinen Code in den Abschnitt Funktionscode ein. Das folgende Beispiel verwendet Python 3.7. Ersetze im Beispiel die folgenden Werte:
    Standard: der Athena-Datenbankname
    SELECT* FROM default.tb: die Abfrage, die du planen möchtest
    s3://AWSDOC-EXAMPLE-BUCKET/: der S3-Bucket für die Abfrageausgabe

    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. Wähle Bereitstellen.

  8. Öffne die Amazon-EventBridge-Konsole.

  9. Wähle im Navigationsbereich Regeln und dann Regel erstellen aus.

  10. Gib einen Namen und eine Beschreibung für die Regel ein.

  11. Wähle unter Muster definieren die Option Zeitplan aus.

  12. Wähle Cron-Ausdruck aus und gib dann einen Cron-Ausdruck ein.

  13. Wähle für Ereignisbus auswählen die Option AWS-Standard-Ereignisbus aus.

  14. Gehe im Abschnitt Ziele auswählen wie folgt vor:
    Wähle für Ziel die Lambda-Funktion aus der Dropdown-Liste aus.
    Wähle für Funktion den Namen deiner Lambda-Funktion aus der Dropdown-Liste aus.

  15. Wähle Erstellen.

Hinweis: Es gibt Kontingente für die zulässige Anzahl von Aufrufen der Athena-API pro Konto. Stelle sicher, dass du die Kontingente einhältst, wenn du mehrere Abfragen planen möchtest. Weitere Informationen findest du unter API-Aufrufkontingente pro Konto.

Eine ETL-Pipeline mit Step Functions erstellen

Wenn du Step Functions verwendest, um eine ETL-Pipeline zu erstellen, die Athena enthält, kannst du die Step Functions verwenden, um eine Athena-Abfrage zu planen.

crontab von einem Linux-Computer aus verwenden

Wenn du einen Linux-Computer verwendest, kannst du crontab verwenden, um eine Athena-Abfrage zu planen.

Einen AWS-Glue-Python-Shell-Auftrag verwenden

Du kannst einen AWS-Glue-Python-Shell-Auftrag verwenden, um die Athena-Abfrage mit der Athena-Boto3-API auszuführen. Definiere dann einen Zeitplan für den AWS-Glue-Auftrag.

Ähnliche Informationen

Tutorial: Eine geplante EventBridge-Regel für AWS-Lambda-Funktionen erstellen

Erstellen einer Regel, die nach einem Zeitplan in Amazon EventBridge ausgeführt wird

AWS OFFICIALAktualisiert vor 2 Jahren