使用 CloudWatch Events 实现 AWS Glue 自动化
您可以使用 Amazon CloudWatch Events 自动执行您的 AWS 服务并自动响应系统事件,例如应用程序可用性问题或资源更改。AWS 服务中的事件近乎实时地传输到 CloudWatch Events。您可以编写简单规则来指示您关注的事件,并指示要在事件匹配规则时执行的自动化操作。可自动触发的操作包括:
-
调用 AWS Lambda 函数
-
调用 Amazon EC2 Run Command
-
将事件中继到 Amazon Kinesis Data Streams
-
激活 AWS Step Functions 状态机
-
通知 Amazon SNS 主题或 Amazon SQS 队列
一些将 CloudWatch Events 与 AWS Glue 结合使用的示例包括:
-
当 ETL 任务成功时激活 Lambda 函数
-
当 ETL 任务失败时通知 Amazon SNS 主题
以下 CloudWatch Events 由 AWS Glue 生成。
-
针对
SUCCEEDED
、FAILED
、TIMEOUT
和STOPPED
生成的"detail-type":"Glue Job State Change"
事件。 -
当超过作业延迟通知阈值时,则会针对
RUNNING
、STARTING
和STOPPING
作业运行生成"detail-type":"Glue Job Run Status"
事件。必须设置作业延迟通知阈值属性才能接收这些事件。当超过作业延迟通知阈值时,每个作业运行状态仅生成一个事件。
-
针对
Started
、Succeeded
和Failed
生成"detail-type":"Glue Crawler State Change"
事件。 -
针对
CreateDatabase
、DeleteDatabase
、CreateTable
、DeleteTable
和BatchDeleteTable
生成"detail-type":"Glue Data Catalog Database State Change"
的事件。例如,如果创建或删除表,系统会向 CloudWatch Events 发送一条通知。请注意,您不能编写取决于通知事件的顺序或存在的程序,因为它们可能是乱序或缺失的。尽最大努力发出事件。在通知的详细信息中:typeOfChange
包含 API 操作的名称。databaseName
包含受影响数据库的名称。changedTables
对于每个通知最多包含 100 个受影响的表的名称。当表名称过长时,可创建多个通知。
-
针对
UpdateTable
、CreatePartition
、BatchCreatePartition
、UpdatePartition
、DeletePartition
、BatchUpdatePartition
和BatchDeletePartition
生成的"detail-type":"Glue Data Catalog Table State Change"
事件。例如,如果更新表或分区,系统会向 CloudWatch Events 发送一条通知。请注意,您不能编写取决于通知事件的顺序或存在的程序,因为它们可能是乱序或缺失的。尽最大努力发出事件。在通知的详细信息中:typeOfChange
包含 API 操作的名称。databaseName
包含其中包含受影响资源的数据库的名称。tableName
包含受影响的表的名称。changedPartitions
在一条通知中最多指定 100 个受影响的分区。当分区名称过长时,可创建多个通知。例如,如果有两个分区键
Year
和Month
,则"2018,01", "2018,02"
会修改分区(其中"Year=2018" and "Month=01"
)和分区(其中"Year=2018" and "Month=02"
)。{ "version":"0", "id":"abcdef00-1234-5678-9abc-def012345678", "detail-type":"Glue Data Catalog Table State Change", "source":"aws.glue", "account":"123456789012", "time":"2017-09-07T18:57:21Z", "region":"us-west-2", "resources":["arn:aws:glue:us-west-2:123456789012:database/default/foo"], "detail":{ "changedPartitions": [ "2018,01", "2018,02" ], "databaseName": "default", "tableName": "foo", "typeOfChange": "BatchCreatePartition" } }
有关更多信息,请参阅 Amazon CloudWatch Events 用户指南。有关特定于 AWS Glue 的事件,请参阅 AWS Glue 事件。