Glue Job延迟通知阈值配置:如何在邮件正文传入文件名
解决AWS Glue延迟通知中添加自定义文件名参数的问题
方法1:使用CloudWatch自定义事件规则(推荐)
AWS Glue默认的延迟通知模板不支持直接插入自定义作业参数,需通过CloudWatch事件规则重构通知逻辑:
- 进入CloudWatch控制台,创建新的事件规则
- 事件源选择
AWS Glue,事件类型指定Glue Job Run State Change,并筛选状态为RUNNING(匹配延迟触发场景)
- 事件源选择
- 目标配置选择你当前使用的SNS通知主题
- 在「输入转换器」中编写JSON模板,提取作业参数里的文件名:
替换{ "主题": "Glue作业延迟通知", "内容": "作业【$.detail.jobName】已超过延迟阈值,关联文件名:$.detail.userArguments.--input-file" }--input-file为你实际传入的文件名参数键名(需以--开头)- 保存规则后,后续延迟通知邮件将自动包含文件名信息
方法2:作业代码内主动触发通知(补充方案)
若自定义事件规则不符合需求,可在Glue作业代码中加入时长检查逻辑,主动发送带文件名的通知:
import boto3 import time from awsglue.utils import getResolvedOptions # 获取作业参数 args = getResolvedOptions(sys.argv, ['JOB_NAME', '--input-file']) file_name = args['--input-file'] job_name = args['JOB_NAME'] sns_client = boto3.client('sns') topic_arn = "你的SNS主题ARN" delay_threshold = 30 # 替换为你的阈值分钟数 start_timestamp = time.time() # 作业运行中定期检查时长 while True: elapsed_minutes = (time.time() - start_timestamp) / 60 if elapsed_minutes >= delay_threshold: sns_client.publish( TopicArn=topic_arn, Subject=f"作业{job_name}延迟告警", Message=f"作业已运行超过{delay_threshold}分钟,处理文件:{file_name}" ) break time.sleep(60)
- 需确保Glue作业的IAM角色拥有
SNS:Publish权限
关键提示
- 自定义作业参数必须以
--为前缀传入,才能在CloudWatch事件的userArguments字段中被识别 - Glue默认的延迟通知模板无法直接修改,必须通过自定义流程实现参数插入
内容的提问来源于stack exchange,提问作者Sharayu Dhamale
相关产品推荐
相关产品推荐

