Ir para o conteúdo

Como posso usar uma função do Lambda para iniciar automaticamente um trabalho do AWS Glue quando a execução de um crawler for concluída?

4 minuto de leitura
0

Quero usar uma função do AWS Lambda para iniciar automaticamente um trabalho do AWS Glue quando a execução de um crawler for concluída.

Breve descrição

Para iniciar um trabalho quando a execução de um crawler for concluída, crie uma função do AWS Lambda e uma regra do Amazon EventBridge.

Observação: também é possível usar os fluxos de trabalho do AWS Glue para iniciar automaticamente um trabalho quando a execução de um crawler for concluída. Para obter mais informações, consulte Como posso usar os fluxos de trabalho do AWS Glue para iniciar automaticamente um trabalho quando a execução de um crawler for concluída?

Resolução

Pré-requisitos:

Você deve ter o seguinte:

  • Um trabalho de extração, transformação e carregamento (ETL) do AWS Glue.
  • Um crawler do AWS Glue.
  • Um perfil do AWS Identity and Access Management (AWS IAM) para o Lambda com permissão para executar trabalhos do AWS Glue. Por exemplo, configure um perfil vinculado a serviço para o Lambda que tenha a política AWSGlueServiceRole anexada ao perfil.

Crie a função do Lambda

Conclua as seguintes etapas:

  1. Abra o console do Lambda.
  2. Escolha Criar função.
  3. Na página Criar função, insira as seguintes informações:
    Escolha Criar do zero.
    Em Nome da função, insira um nome para sua função.
    Em Runtime, escolha uma opção Python.
    Para Arquitetura, use a opção padrão, x86_64.
    Em Alterar perfil de execução padrão, em Perfil de execução, escolha Usar um perfil existente.
    Em Perfil existente, selecione o perfil do IAM que tenha permissão para executar trabalhos do AWS Glue.
  4. Escolha Criar função.
  5. Na página de detalhes da função, em Fonte do código, insira o seguinte código:
    # Set up loggingimport 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
    Observação: substitua MyTestJob pelo nome do seu trabalho de ETL do AWS Glue.
  6. Em Fonte do código, escolha Testar.
  7. Abra o console do AWS Glue e confirme se o trabalho começou.

Para testar a função do Lambda, execute seu crawler do AWS Glue. Em seguida, verifique a lista de recursos de execução de trabalhos do seu trabalho de ETL do AWS Glue. O status Executar exibe Iniciando ou Executando.

Criar a regra do EventBridge

Conclua as seguintes etapas:

  1. Abra o console do EventBridge.
  2. No painel de navegação, escolha Regras e, em seguida, Criar regra.
  3. Insira um nome e uma descrição para a regra e selecione Próximo.
  4. Use valores padrão para Origem do evento e Evento de amostra.
  5. Na seção Padrão de eventos, selecione Padrões personalizados (editor JSON).
  6. Insira o código a seguir no campo Padrão de evento:
    {
        "detail-type": [
            "Glue Crawler State Change"
        ],
        "source": [
            "aws.glue"
        ],
        "detail": {
            "crawlerName": [
                "MyTestCrawl"
            ],
            "state": [
                "Succeeded"
            ]
        }
    }
    Observação: substitua MyTestCrawl pelo nome do seu crawler do AWS Glue.
  7. Em Selecionar destinos, insira as seguintes informações:
    Em Destino, selecione Função do Lambda.
    Em Função, selecione sua função do Lambda.
  8. Escolha Criar.

Para testar a função do Lambda e a regra do EventBridge, execute seu crawler do AWS Glue. Em seguida, verifique a lista de recursos de execução de trabalhos do seu trabalho de ETL do AWS Glue. O status Executar exibe Iniciando ou Executando.

Informações relacionadas

Criar regras que reagem a eventos do Amazon EventBridge

AWS OFICIALAtualizada há 5 meses