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

Date de la dernière mise à jour : 13/03/2020

Je souhaite utiliser une fonction AWS Lambda pour démarrer automatiquement une tâche AWS Glue à l'issue de l'exécution d'un analyseur. Comment procéder ?

Brève description

Pour démarrer une tâche à l'issue de l'exécution d'un analyseur, créez une fonction AWS Lambda et une règle Amazon CloudWatch Events. 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 à l'issue de l'exécution d'un analyseur. Cette méthode nécessite que vous démarriez l'analyseur à partir de la page Workflows (Flux de travail) de la console AWS Glue. Pour plus d'informations, consultez la section Comment utiliser des flux de travail AWS Glue pour démarrer automatiquement une tâche à l'issue de l'exécution d'un analyseur ?

Solution

Avant d’effectuer la procédure suivante, assurez-vous que vous disposez des éléments suivants :

  • Une tâche d’extraction, de transformation et de chargement (ETL) AWS Glue.
  • Un analyseur AWS Glue.
  • Un rôle AWS Identity and Access Management (IAM) pour Lambda avec l’autorisation d’exécuter des tâches AWS Glue. Par exemple, configurez un rôle lié à un service pour Lambda, associé à une stratégie AWSGlueServiceRole.

Créer la fonction Lambda

1.    Ouvrez la console Lambda.

2.    Sélectionnez Créer une fonction.
Remarque : si vous n’avez pas de fonctions Lambda, la page Démarrage s’affiche. Sélectionnez Créer une fonction, puis passez à l’étape suivante.

3.    Assurez-vous que l’option Créer à partir de zéro est sélectionnée, puis configurez les options suivantes :
Pour Name (Nom), saisissez un nom pour votre fonction.
Pour Runtime (Exécution), choisissez l'une des options Python.
Pour Role (Rôle), sélectionnez Choose an existing role (Choisir un rôle existant).
Pour Rôle existant, sélectionnez un rôle IAM qui dispose de l’autorisation d’exécuter des tâches AWS Glue.

4.    Choisissez Create function (Créer une fonction).

5.    Dans la section Function code (Code de fonction), collez un code similaire à ce qui suit. 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('## TRIGGERED 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.    Dans le coin supérieur droit de la page, sélectionnez Enregistrer, puis Tester.

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

Créer la règle CloudWatch Events

1.    Ouvrez la console CloudWatch.

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

3.    Dans la section Source de l’événement, sélectionnez Modèle d’événement, puis l’élément intitulé Créer un modèle d’événement correspondant aux événements par service. Dans la liste déroulante qui s’affiche, sélectionnez Modèle d’événement personnalisé.

4.    Dans la zone Créer un modèle d’événement personnalisé, remplacez le code existant par le code suivant. Assurez-vous de remplacer MyTestCrawl par le nom de votre analyseur AWS Glue.

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

5.    Dans la section Cibles sur le côté droit de la page, sélectionnez Ajouter une cible.

6.    Dans la liste déroulante, sélectionnez Fonction Lambda, si vous ne l'avez pas encore fait.

7.    Dans la liste déroulante Fonction, sélectionnez le nom de votre fonction Lambda.

8.    Dans le coin inférieur droit de la page, sélectionnez Configurer les détails.

9.    Saisissez un nom et une description de votre règle CloudWatch Events, puis sélectionnez Créer une règle.

Pour tester la fonction Lambda et la règle CloudWatch Events, exécutez votre analyseur AWS Glue. Ensuite, consultez l’onglet Historique de votre tâche ETL AWS Glue. Le statut d’exécution doit être Starting (Démarrage en cours) ou Running (En cours d'exécution).

Remarque : les événements CloudWatch Events sont émis dans la mesure du possible. Dans de rares cas, les événements peuvent être dans le désordre ou manquants, et la fonction Lambda peut ne pas s'exécuter.


Cet article vous a-t-il été utile ?

Cette page peut-elle être améliorée ?


Vous avez besoin d’aide ?