Comment utiliser une fonction Lambda pour démarrer automatiquement une tâche AWS Glue à la fin de l’exécution d’un robot ?

Lecture de 4 minute(s)
0

Je souhaite utiliser une fonction AWS Lambda pour démarrer automatiquement une tâche AWS Glue à la fin de l’exécution d’un robot.

Brève description

Pour pouvoir démarrer une tâche une fois l’exécution d’un robot terminée, vous devez créer une fonction AWS Lambda et une règle Amazon EventBridge. Vous pouvez modifier cette méthode pour automatiser d’autres fonctions AWS Glue.

Remarque : vous pouvez également utiliser des flux de travail AWS Glue pour démarrer automatiquement une tâche à la fin de l’exécution d’un robot. Cette méthode nécessite que vous démarriez le robot à partir de la page Flux de travail de la console AWS Glue. Pour en savoir plus, consultez la page Comment utiliser les flux de travail AWS Glue pour démarrer automatiquement une tâche à la fin de l’exécution d’un robot ?

Résolution

Avant d’effectuer les étapes présentées ci-dessous, assurez-vous que vous disposez des éléments suivants :

  • Une tâche extraction, transformation et chargement (ETL) AWS Glue.
  • Un robot AWS Glue.
  • Un rôle Gestion des identités et des accès AWS (AWS IAM) pour Lambda avec l’autorisation d’exécuter des tâches AWS Glue. Vous pouvez par exemple configurer un rôle lié à un service pour Lambda auquel la politique AWSGlueServiceRole est attachée.

Création de la fonction Lambda

1.    Ouvrez la console Lambda.

2.    Sélectionnez Créer une fonction.
Remarque : si aucune fonction Lambda n’existe, la page Démarrer apparaît. Sélectionnez Créer une fonction, puis passez à l’étape suivante.

3.    Vérifiez 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.
Dans Architecture, utilisez l’option par défaut : x86_64.
Dans Rôle, sélectionnez la liste déroulante Modifier le rôle d’exécution par défaut, puis sélectionnez Utiliser un rôle existant.
Dans Rôle existant, sélectionnez un rôle IAM autorisé à exécuter des tâches AWS Glue.

4.    Sélectionnez Créer une fonction.

5.    Dans la section Code de fonction, collez un code similaire à l’exemple suivant. Veillez à remplacer MyTestJob par le nom de votre tâche ETL AWS Glue.

# Set up logging
import json
import os
import logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)

# Import Boto 3 for AWS Glue
import boto3
client = boto3.client('glue')

# Variables for the job:
glueJobName = "MyTestJob"

# Define Lambda function
def lambda_handler(event, context):
    logger.info('## INITIATED BY EVENT: ')
    logger.info(event['detail'])
    response = client.start_job_run(JobName = glueJobName)
    logger.info('## STARTED GLUE JOB: ' + glueJobName)
    logger.info('## GLUE JOB RUN ID: ' + response['JobRunId'])
    return response

6.    En haut de l’interface utilisateur de modification de code, choisissez Déployer, puis choisissez Tester.

7.    Ouvrez la console AWS Glue et vérifiez que la tâche a bien démarré.

Création de la règle EventBridge

1.    Ouvrez la console Amazon EventBridge.

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

3.    Saisissez le nom et la description de la règle, puis sélectionnez Suivant.

4.    Utilisez les valeurs par défaut pour Source d’événement et **Exemple d’événement.**Dans la section Modèle d’événement, sélectionnez Modèles personnalisés (éditeur JSON).

5.    Copiez et collez le code suivant dans la zone Modèle d’événement. Veillez à remplacer MyTestCrawl par le nom de votre robot AWS Glue.

{
    "detail-type": [
        "Glue Crawler State Change"
    ],
    "source": [
        "aws.glue"
    ],
    "detail": {
        "crawlerName": [
            "MyTestCrawl"
        ],
        "state": [
            "Succeeded"
        ]
    }
}

6.    Dans la section Sélectionner les cibles, procédez comme suit :

Dans Cible, sélectionnez Fonction Lambda.

Dans Fonction, sélectionnez le nom de votre fonction Lambda.

7.    Sélectionnez Créer.

Pour tester la fonction Lambda et la règle EventBridge, exécutez votre robot AWS Glue. Consultez ensuite l’onglet Historique de votre tâche ETL AWS Glue. Le Statut d’exécution doit indiquer Démarrage ou Exécution.


Informations connexes

Création de règles Amazon EventBridge qui réagissent aux événements

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 2 ans