Comment puis-je utiliser une fonction Lambda pour démarrer automatiquement une tâche AWS Glue à la fin de l'exécution d'un crawler ?

Dernière mise à jour : 05/08/2022

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

Brève description

Afin de 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 EventBridge. Vous pouvez modifier cette méthode pour automatiser d'autres fonctions AWS Glue.

Remarque : vous pouvez également utiliser des flux 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 Flux 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 auquel est attachée la politique 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 Architecture (Architecture), utilisez l'option par défaut, x86_64.
Pour Role (Rôle), sélectionnez la liste déroulante Change default execution role (Changer le rôle d’exécution par défaut) et sélectionnez Use an existing role (utiliser un rôle existant).
Pour Existing Role (Rôle existant), sélectionnez un rôle IAM qui dispose de l'autorisation d'exécuter des tâches AWS Glue.

4.    Sélectionnez 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('## 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 du code, choisissez Deploy (Déployer) puis Test (Test).

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

Créer la règle EventBridge

1.    Ouvrez la console Amazon EventBridge.

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

3.    Saisissez un nom et une description pour la règle, puis sélectionnez Next (Suivant).

4.    Utilisez les valeurs par défaut pour Event source (Source de l'événement) et Sample Event (Exemple d'événement). Dans la section Event Pattern (Modèle d'événement), sélectionnez Custom Patterns (Modèles personnalisés) (éditeur JSON).

5.    Copiez et collez le code suivant dans la zone Event Pattern (Modèle d'événement). Assurez-vous de remplacer MyTestCrawl par le nom de votre crawler AWS Glue.

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

6.    Dans la section Select targets (Sélectionner des cibles), procédez comme suit :

Pour Target (Cible), sélectionnez Lambda function (Fonction Lambda).

Pour Function (Fonction), sélectionnez le nom de votre fonction Lambda.

7.    Choisissez Create (Créer).

Afin de tester la fonction Lambda et la règle EventBridge, exécutez votre analyseur AWS Glue. Consultez ensuite l’onglet History tab (Historique) de votre tâche ETL AWS Glue. Le Run status (statut d'exécution) doit afficher Starting (Démarrage en cours) ou Running (En cours d'exécution).


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


Avez-vous besoin d'aide pour une question technique ou de facturation ?