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

Dernière mise à jour : 06/01/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 analyseur.

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 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.    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.    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 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 ainsi qu'une description pour la règle.

4.    Pour Define pattern (Définir le modèle), sélectionnez Event pattern (Modèle d'événement). Ensuite, sélectionnezCustom pattern (Modèle personnalisé).

5.    Dans la boîte Event pattern (Modèle d’événement), 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"
        ]
    }
}

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 ?


Besoin d'aide pour une question technique ou de facturation ?