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

2 分钟阅读
0

我想使用 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 选项之一。
对于架构,使用默认选项 x86_64
角色选择更改默认执行角色的下拉列表,然后选择使用现有角色
现有角色选择有权运行 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 = "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.    在代码编辑 UI 顶部,选择部署,然后选择测试

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

创建 EventBridge 规则

1.    打开 Amazon EventBridge 控制台

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

3.    为规则输入名称和描述,选择下一步

4.    为事件源示例事件****使用默认值。事件模式部分,选择自定义模式(JSON 编辑器)。

5.    将以下代码复制并粘贴到事件模式框中。确保将 MyTestCrawl 替换为您的 AWS Glue 爬网程序的名称。

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

6.    在选择目标部分,执行以下操作:

目标,选择 Lambda 函数

函数选择您的 Lambda 函数的名称。

7.    选择创建

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


相关信息

Creating Amazon EventBridge rules that react to events

AWS 官方
AWS 官方已更新 2 年前