在 AWS Glue 提取、转换、加载(ETL)任务时,如果状态是成功、失败、超时或停止,我想收到通知。
简述
要在您的 AWS Glue 任务状态更改时收到通知,请完成以下步骤:
- 创建 Amazon Simple Notification Service(Amazon SNS)主题。SNS 主题向订阅端点或客户端发送消息。
- 为您要监控的 AWS Glue 任务状态更改创建 Amazon EventBridge 事件规则。
解决方案
**注意:**当您的任务状态发生变更时,AWS Glue 会生成事件。有关更多信息,请参阅 AWS Glue job run statuses。
创建并订阅 Amazon SNS 主题
1.打开 Amazon SNS 控制台。
2.在导航窗格中,选择主题。
3.选择创建主题。
4.对于类型,选择标准。
5.输入主题名称。显示名称字段是可选的。
6.选择创建主题。
7.在导航窗格中,选择订阅。
8.选择创建订阅。
9.有关详细信息,请填写以下字段:
对于主题 ARN,请选择您创建的主题的 ARN。
对于协议,选择 电子邮件。
在端点中,输入您要向其发送通知的电子邮件地址。
10.选择创建订阅。
在您收到的订阅确认电子邮件中,选择确认订阅。记下您创建的 SNS 主题。在创建 EventBridge 规则时使用这个主题。
创建 EventBridge 事件规则
1.打开 EventBridge 控制台。
2.在导航窗格中,选择规则,然后选择创建规则。
3.为您的规则输入名称。保留默认的事件总线和规则类型设置,然后选择下一步。
4.对于创建方法,选择自定义模式(JSON 编辑器)。
5.在事件模式框中,输入以下示例事件模式,以便捕获 AWS Glue 状态更改事件:
{
"detail-type": [
"Glue Job State Change",
"Glue Job Run Status"
],
"source": [
"aws.glue"
],
"detail": {
"state": [
"FAILED",
"SUCCEEDED",
"TIMEOUT",
"STOPPED",
"RUNNING",
"STARTING",
"STOPPING"
]
}
}
提示:如果您不想收到有关特定状态更改的通知,请从事件模式中删除相应的参数,例如正在运行。
6.选择下一步。
7.对于目标类型,选择 AWS 服务。
8.对于选择目标,选择 SNS 主题。
9.对于主题,选择您创建的 SNS 主题的名称。
10.选择下一步。
11.(可选)为规则输入一个标记,然后选择下一步。
12.选择创建规则。
有关更多信息,请参阅Creating event patterns和Automating AWS Glue with Amazon CloudWatch Events。
测试您的配置
要测试事件规则和 SNS 主题,请运行一个 AWS Glue 任务。当任务状态更改为您在事件规则中指定的状态后,确认您会收到电子邮件通知。
**重要事项:**如果相关规则未运行,请确保事件模式正确。
示例
您可以捕获任务运行失败事件并将该事件发送到 SNS 主题。以下是 Glue 任务失败的示例事件:
{
"version": "0",
"id": "abcdef01-1234-5678-9abc-def012345678",
"detail-type": "Glue Job State Change",
"source": "aws.glue",
"account": "123456789012",
"time": "2017-09-07T06:02:03Z",
"region": "us-west-2",
"resources": [],
"detail": {
"jobName": "MyJob",
"severity": "ERROR",
"state": "FAILED",
"jobRunId": "jr_0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"message": "JobName:MyJob and JobRunId:jr_0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef failed to run with exception Role arn:aws:iam::123456789012:role/Glue_Role should be given assume role permissions for Glue Service."
}
}
要解析 AWS Glue 的所有失败任务,请完成前面的步骤。
相关信息
当 AWS Glue 作业重试失败时,如何使用 Lambda 函数接收 SNS 警报?
如何在爬网程序运行完成后自动启动 AWS Glue 任务?
Events from AWS services