Passer au contenu

Comment planifier une requête Amazon Athena ?

Lecture de 4 minute(s)
0

Je souhaiterais planifier des requêtes dans Amazon Athena.

Brève description

Les requêtes planifiées ont de nombreux cas d'utilisation, tels que la création de rapports périodiques ou le chargement de nouvelles partitions à intervalles réguliers. Choisissez l'une des méthodes suivantes pour planifier des requêtes dans Athena, en fonction de votre cas d'utilisation :

  • Créez une fonction AWS Lambda pour planifier la requête, puis créez une règle Amazon EventBridge pour planifier la fonction Lambda.
  • Utilisez AWS Step Functions pour créer un pipeline ETL qui utilise Athena.
  • Sur une machine Linux, utilisez crontab pour planifier la requête.
  • Utilisez une tâche shell AWS Glue Python.

Résolution

Utiliser une fonction Lambda et une règle EventBridge pour planifier une requête Athena

Vous pouvez utiliser une fonction Lambda et une règle EventBridge pour planifier une requête Athena. Pour cela, procédez comme suit :

  1. Créez un rôle de service Gestion des identités et des accès AWS (AWS IAM) pour Lambda. Puis, associez une politique qui autorise l’accès à Athena, à Amazon Simple Storage Service (Amazon S3) et à Amazon CloudWatch Logs. Par exemple, vous pouvez ajouter des autorisations 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 à CloudWatch Logs.

  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 Nom, saisissez le nom de votre fonction.
    Dans Exécution, choisissez l’une des options Python.
    Dans 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 : nom de la base de données Athena
    SELECT * FROM default.tb : requête que vous souhaitez planifier
    s3://AWSDOC-EXAMPLE-BUCKET/ : 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. Sélectionnez Déployer.

  8. Ouvrez la console Amazon EventBridge.

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

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

  11. Pour Définir le modèle, sélectionnez Planifier.

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

  13. Pour Sélectionner le bus d’événement, sélectionnez Bus d’événements AWS par défaut.

  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.

Remarque : Il existe des quotas pour le nombre d'appels autorisés vers l'API Athena pour chaque compte. Assurez-vous de respecter les quotas si vous souhaitez planifier plusieurs requêtes. Pour plus d’informations, consultez la section Quotas d’appel d’API par compte.

Créer un pipeline ETL avec Step Functions

Si vous utilisez Step Functions pour créer un pipeline ETL incluant Athena, vous pouvez utiliser les Step Functions pour planifier une requête Athena.

Utiliser crontab depuis une machine Linux

Si vous utilisez une machine Linux, vous pouvez utiliser crontab pour planifier une requête Athena.

Utiliser une tâche shell AWS Glue Python

Vous pouvez utiliser une tâche shell Python AWS Glue pour exécuter la requête Athena à l’aide de l’API Athena Boto3. Puis, définissez un calendrier pour la tâche AWS Glue.

Informations connexes

Didacticiel : Créer une règle planifiée EventBridge pour les fonctions AWS Lambda

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

AWS OFFICIELA mis à jour il y a 2 ans