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. Você pode modificar esse método para automatizar outras funções do AWS Glue.

Observação: você também pode usar os fluxos de trabalho do AWS Glue para iniciar automaticamente um trabalho quando a execução do crawler for concluída. Esse método exige que você inicie o crawler na página Fluxos de trabalho no console do AWS Glue. 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 do crawler for concluída?

Resolução

Antes de concluir as etapas a seguir, verifique se você tem:

  • 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 (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 a ela.

Criar a função do Lambda

1.    Abra o console do Lambda.

2.    Selecione Criar função.
Observação: se você não tiver funções do Lambda, a página Começar a usar será exibida. Escolha Criar uma função e continue com a próxima etapa.

3.    Certifique-se de que Criar do zero esteja selecionado e, em seguida, configure as seguintes opções:
Em Nome, insira um nome para o cabeçalho.
Em Runtime, escolha uma das opções do Python.
Para Arquitetura, use a opção padrão, x86_64.
Em Função, selecione a lista suspensa em Alterar a função de execução padrão e selecione Usar uma função existente.
Para Função existente, selecione um perfil do IAM que tenha permissão para executar trabalhos do AWS Glue.

4.    Selecione Criar função.

5.    Na seção Código da função, cole um código semelhante ao seguinte. Certifique-se de substituir MyTestJob pelo nome do seu trabalho de ETL do 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.    Na parte superior da interface de edição de código, escolha Implantar e, em seguida, escolha Testar.

7.    Abra o console do AWS Glue e confirme se o trabalho começou.

Criar a regra do EventBridge

1.    Abra o console do Amazon Eventbridge.

2.    No painel de navegação, selecione Regras, em seguida, selecione Criar regra.

3.    Insira um nome e uma descrição para a regra e selecione Avançar.

4.    Use valores padrão para Origem do evento e **Evento de amostra.**Na seção Padrão de eventos, selecione Padrões personalizados (editor JSON).

5.    Copie e cole o código a seguir na caixa Padrão do evento. Certifique-se de substituir **MyTestCrawl ** pelo nome do seu rastreador do AWS Glue.

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

6.    Na seção Selecionar destinos, faça o seguinte:

Em Destino, selecione Função do Lambda.

Em Função, selecione o nome da sua função do Lambda.

7.    Escolha Criar.

Para testar a função do Lambda e a regra do EventBridge, execute seu rastreador do AWS Glue. Em seguida, verifique a guia Histórico do seu trabalho de ETL do AWS Glue. O status Executar deve exibir Iniciando ou Executando.


Informações relacionadas

Como criar regras do Amazon EventBridge que reagem a eventos

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos