Comment puis-je planifier une requête Amazon Athena ?

Lecture de 4 minute(s)
0

Je souhaiterais planifier des requêtes dans Amazon Athena.

Brève description

La planification des requêtes est importante dans de nombreux cas, notamment lors de l’exécution de rapports périodiques ou du chargement de nouvelles partitions à intervalles réguliers. Voici quelques méthodes de planification de requêtes dans Athena :

Résolution

Suivez ces étapes pour planifier une requête Athena à l’aide d’une fonction Lambda et d’une règle EventBridge :

1.    Créez un rôle de service AWS Identity and Access Management (IAM) pour Lambda. Joignez ensuite une politique qui autorise l’accès à Athena, à Amazon Simple Storage Service (Amazon S3) et à Amazon CloudWatch Logs. Par exemple, vous pouvez ajouter AmazonAthenaFullAccess et CloudWatchLogsFullAccess au rôle. **AmazonAthenaFullAccess ** permet un accès complet à Athena et inclut des autorisations de base pour Amazon S3. **CloudWatchLogsFullAccess ** permet un accès complet aux journaux CloudWatch.

2.    Ouvrez la console Lambda.

3.    Sélectionnez Créer une fonction.

4.    Assurez-vous que l’option Créer à partir de zéro est sélectionnée, puis configurez les options suivantes :

Dans le champ Nom, saisissez le nom de votre fonction.
Dans Exécution,choisissez l’une des options Python.
Pour Rôle, choisissez Utiliser un rôle existant, puis choisissez le rôle IAM que vous avez créé à l’étape 1.

5.    Sélectionnez Créer une fonction.

6.    Collez votre code dans la section Code de fonction. Le présent exemple utilise Python 3.7. Remplacez les valeurs suivantes dans l’exemple :

par défaut : le nom de la base de données Athena
SELECT * FROM default.tb : la requête que vous souhaitez planifier
s3://AWSDOC-EXAMPLE-BUCKET/ : le compartiment S3 pour la sortie de la requête

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.    Choisissez Déployer.

8.    Ouvrez la console Amazon EventBridge.

9.    Choisissez Règles, puis Créer une règle dans le volet de navigation.

10.    Saisissez le nom et la description de la règle.

11.    Sélectionnez Planifier pour Définir le modèle.

12.    Sélectionnez Expression Cron, puis saisissez une expression cron.

13.    Choisissez Bus d’événements AWS par défaut pour sélectionner un bus d’événements.

14.    Dans la section Sélectionner des cibles, procédez comme suit :

Pour Cible, sélectionnez Fonction Lambda dans la liste déroulante. Pour Fonction, sélectionnez le nom de votre fonction Lambda dans la liste déroulante.

15.    Sélectionnez Créer.

Si vous planifiez plusieurs requêtes, notez qu’il existe des quotas pour le nombre d’appels d’API Athena par compte. Pour plus d’informations, consultez Quotas d’appel d’API par compte.


Informations connexes

Tutoriel : programmer des fonctions AWS Lambda à l’aide d’EventBridge

Création d’une règle Amazon EventBridge qui s’exécute selon un calendrier

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an