如何使用 Lambda 函数在爬网程序运行完成时自动启动 AWS Glue 任务?

上次更新日期:2022 年 1 月 6 日

我想要使用 AWS Lambda 函数在爬网程序运行完成时自动启动 AWS Glue 任务。

简短描述

要在爬网程序运行完成时启动任务,请创建 AWS Lambda 函数和 Amazon EventBridge 规则。您可以修改此方法以自动化其他 AWS Glue 函数。

注意:您也可以使用 AWS Glue 工作流在爬网程序运行完成时自动启动作业。此方法需要您从 AWS Glue 控制台上的工作流页面启动爬网程序。有关更多信息,请参阅我如何使用 AWS Glue 工作流在爬网程序运行完成时自动启动作业?

解决方法

在完成以下步骤之前,请确保您拥有:

  • AWS Glue 提取、转换和加载 (ETL) 作业。
  • AWS Glue 爬网程序。
  • Lambda 的具有运行 AWS Glue 作业权限的 AWS Identity and Access Management(IAM)角色。例如,为附加了 AWSGlueServiceRole 策略的 Lambda 设置服务关联角色

创建 Lambda 函数

1.    打开 Lambda 控制台

2.    选择创建函数
注意:如果您没有 Lambda 函数,则会出现开始使用页面。选择创建函数,然后继续下一步。

3.    确保选择了从头开始创作,然后配置以下选项:
对于名称,输入函数名称。
对于运行时,选择其中一个 Python 选项。
对于角色,选择选择现有角色
对于现有角色,请选择有权运行 AWS Glue 作业的 IAM 角色。

4.    选择创建函数

5.    在函数代码部分中,粘贴类似以下内容的代码。请务必将 MyTestJob 替换为 AWS Glue ETL 作业的名称。

# 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 = "<b>MyTestJob</b>"

# 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.    在页面的右上角,选择保存,然后选择测试

7.    打开 AWS Glue 控制台并确认任务已启动。

创建 EventBridge 规则

1.    打开 Amazon EventBridge 控制台

2.    在导航窗格中,选择规则,然后选择创建规则

3.    输入规则的名称和描述。

4.    对于 Define pattern(定义模式),选择 Event pattern(事件模式)。然后,选择 Custom pattern(自定义模式)。

5.    在 Event pattern(事件模型)框中,使用以下代码替换已有代码。请务必将 MyTestCrawl 替换为您的 AWS Glue 爬网程序的名称。

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

6.    在 Select Targets(选择目标)部分中,执行以下操作:

对于目标,请选择 Lambda 函数

对于函数,选择您的 Lambda 函数的名称。

7.    选择 Create(创建)。

要测试 Lambda 函数和 EventBridge 规则,请运行 AWS Glue 爬网程序。然后,检查 AWS Glue ETL 任务的历史记录选项卡运行状态应显示为正在启动正在运行


这篇文章对您有帮助吗?


您是否需要账单或技术支持?