You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Glue Job延迟通知阈值配置:如何在邮件正文传入文件名

解决AWS Glue延迟通知中添加自定义文件名参数的问题

方法1:使用CloudWatch自定义事件规则(推荐)

AWS Glue默认的延迟通知模板不支持直接插入自定义作业参数,需通过CloudWatch事件规则重构通知逻辑:

    1. 进入CloudWatch控制台,创建新的事件规则
    1. 事件源选择AWS Glue,事件类型指定Glue Job Run State Change,并筛选状态为RUNNING(匹配延迟触发场景)
    1. 目标配置选择你当前使用的SNS通知主题
    1. 在「输入转换器」中编写JSON模板,提取作业参数里的文件名:
    {
      "主题": "Glue作业延迟通知",
      "内容": "作业【$.detail.jobName】已超过延迟阈值,关联文件名:$.detail.userArguments.--input-file"
    }
    
    替换--input-file为你实际传入的文件名参数键名(需以--开头)
    1. 保存规则后,后续延迟通知邮件将自动包含文件名信息

方法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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 05:05:02