我想使用 AWS Lambda 函数在爬网程序运行完后自动启动 AWS Glue 作业。
简短描述
要在爬网程序运行完后启动作业,请创建 AWS Lambda 函数和 Amazon EventBridge 规则。
**注意:**您还可以使用 AWS Glue 工作流在爬网程序运行完后自动启动作业。有关详细信息,请参阅如何使用 AWS Glue 工作流在爬网程序运行完成后自动启动作业?
解决方法
先决条件:
必须具备以下条件:
- AWS Glue 提取、转换、加载 (ETL) 作业
- AWS Glue 爬网程序
- 有权运行 AWS Glue 作业的 Lambda AWS Identity and Access Management (IAM) 角色。例如,为 Lambda 设置一个附加了 AWSGlueServiceRole 策略的服务关联角色。
创建 Lambda 函数
完成以下步骤:
- 打开 Lambda 控制台。
- 选择 Create function(创建函数)。
- 在 Create function(创建函数)页面上,输入以下信息:
选择 Author from scratch(从头开始创建)。
对于 Function name(函数名称),输入您的函数的名称。
对于 Runtime(运行时),选择一个 Python 选项。
对于架构,使用默认选项 x86_64。
在 Change default execution role(更改默认执行角色)下,对于 Execution role(执行角色),选择 Use an existing role(使用现有角色)。
对于 Existing role(现有角色),选择有权运行 AWS Glue 作业的 IAM 角色。
- 选择 Create function(创建函数)。
- 在函数详细信息页面的 Code source(代码源)下,输入以下代码:
# 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
**注意:**请将 MyTestJob 替换为您的 AWS Glue ETL 作业的名称。
- 在 Code source(代码源)下,选择 Test(测试)。
- 打开 AWS Glue 控制台,然后确认作业是否已启动。
要测试 Lambda 函数,请运行您的 AWS Glue 爬网程序。然后,检查您的 AWS Glue ETL 作业的 Jobs run(作业运行)资源列表。Run status(运行状态)将显示为 Starting(正在启动)或 Running(正在运行)。
创建 EventBridge 规则
完成以下步骤:
- 打开 EventBridge 控制台。
- 在导航窗格中,选择 Rules(规则),然后选择 Create rule(创建规则)。
- 输入规则的名称和描述,然后选择 Next(下一步)。
- 对于 Event source(事件源)和 Sample event(示例事件),使用默认值。
- 在 Event pattern(事件模式)部分下,选择 Custom Patterns(自定义模式)(JSON 编辑器)。
- 在 Event pattern(事件模式)字段中输入以下代码:
{
"detail-type": [
"Glue Crawler State Change"
],
"source": [
"aws.glue"
],
"detail": {
"crawlerName": [
"MyTestCrawl"
],
"state": [
"Succeeded"
]
}
}
**注意:**请将 MyTestCrawl 替换为您的 AWS Glue 爬网程序的名称。
- 对于 Select targets(选择目标),输入以下信息:
对于 Target(目标),选择 Lambda function(Lambda 函数)。
对于 Function(函数),选择您的 Lambda 函数。
- 选择 Create(创建)。
要测试 Lambda 函数和 EventBridge 规则,请运行您的 AWS Glue 爬网程序。然后,检查您的 AWS Glue ETL 作业的 Jobs run(作业运行)资源列表。Run status(运行状态)将显示为 Starting(正在启动)或 Running(正在运行)。
相关信息
在 Amazon EventBridge 中创建对事件做出响应的规则