Wie kann ich eine Amazon Athena-Abfrage terminieren?

Lesedauer: 3 Minute
0

Ich möchte Abfragen in Amazon Athena terminieren.

Kurzbeschreibung

Das Planen von Abfragen ist in vielen Szenarien hilfreich, z. B. beim Ausführen regelmäßiger Berichtsabfragen oder beim Laden neuer Partitionen in regelmäßigen Abständen. Hier sind einige Möglichkeiten, wie Sie Abfragen in Athena planen können:

Behebung

Gehen Sie wie folgt vor, um eine Athena-Abfrage mithilfe einer Lambda-Funktion und einer EventBridge-Regel zu planen:

1.Erstellen Sie eine AWS Identity and Access Management (IAM)-Servicerolle für Lambda. Fügen Sie dann eine Richtlinie hinzu, die den Zugriff auf Athena, Amazon Simple Storage Service (Amazon S3) und Amazon CloudWatch Logs ermöglicht. Beispielsweise können Sie AmazonAthenaFullAccess und CloudWatchLogsFullAccess zur Rolle 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.Öffnen Sie die Lambda-Konsole.

3.Wählen Sie Funktion erstellen aus.

4.Vergewissern Sie sich, dass Ohne Vorgabe erstellen ausgewählt ist, und konfigurieren Sie dann die folgenden Optionen:

Geben Sie unter Name einen Namen für Ihre Funktion ein.
Wählen Sie für Laufzeit eine der Python-Optionen.
Wählen Sie für Rolle die Option Eine vorhandene Rolle verwenden aus, und wählen Sie dann die IAM-Rolle aus, die Sie in Schritt 1 erstellt haben.

5.Wählen Sie Funktion erstellen aus.

6.Fügen Sie Ihren Code in den Abschnitt Funktionscode ein. Das folgende Beispiel verwendet Python 3.7. Ersetzen Sie im Beispiel die folgenden Werte:

Standard: der Athena-Datenbankname
SELECT* FROM default.tb: Die Abfrage, die Sie planen möchten
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ählen Sie Bereitstellen aus.

8.Öffnen Sie die Amazon EventBridge-Konsole.

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

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

11.Wählen Sie unter Muster definieren die Option Zeitplan aus.

12.Wählen Sie Cron-Ausdruck aus, und geben Sie dann einen Cron-Ausdruck ein.

13.Wählen Sie für Event Bus auswählen die Option AWS Standard-Event-Bus aus.

14.Gehen Sie im Abschnitt Ziele auswählen wie folgt vor:

Wählen Sie für Ziel die Lambda-Funktion aus der Dropdownliste aus. Wählen Sie für Funktion den Namen Ihrer Lambda-Funktion aus der Dropdownliste aus.

15.Wählen Sie Erstellen aus.

Wenn Sie mehrere Abfragen planen, beachten Sie, dass es Kontingente für die Anzahl der Aufrufe der Athena-API pro Konto gibt. Weitere Informationen finden Sie unter API-Aufrufquoten pro Konto.


Ähnliche Informationen

Tutorial: AWS Lambda-Funktionen mit EventBridge terminieren

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

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr