当我的 AWS Glue 任务状态发生变更时,如何才能收到 Amazon SNS 通知?

2 分钟阅读
0

在 AWS Glue 提取、转换、加载(ETL)任务时,如果状态是成功、失败、超时或停止,我想收到通知。

简述

要在您的 AWS Glue 任务状态更改时收到通知,请完成以下步骤:

  1. 创建 Amazon Simple Notification Service(Amazon SNS)主题。SNS 主题向订阅端点或客户端发送消息。
  2. 为您要监控的 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 patternsAutomating 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

AWS 官方
AWS 官方已更新 8 个月前