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

如何在AWS Glue任务结束后触发AWS Lambda执行数据清洗?

如何在AWS Glue任务结束时触发Lambda函数

当然可以!这里给你两种靠谱的实现方式,其中一种正好能用上你提到的SNS服务:

方案一:通过Amazon EventBridge(原CloudWatch Events)直接触发Lambda

这是最省心的方式,完全不用修改Glue任务代码,靠云服务的事件联动就能实现:

  • 打开EventBridge控制台,创建一条规则
  • 选择事件源为「AWS服务」,指定服务为「Glue」,事件类型选「Glue Job State Change」
  • 设置触发条件:选中你的目标Glue任务,同时过滤任务状态为SUCCEEDED(如果需要在任务失败时也触发,可以额外添加FAILED状态)
  • 选择目标为「Lambda函数」,直接指定你用来做数据清洗的Lambda函数

这样一来,只要你的Glue任务成功完成,EventBridge就会自动触发对应的Lambda,全程零代码改动。

方案二:在Glue任务代码中主动调用SNS发消息,再触发Lambda

如果你更倾向于用SNS做中间层(比如需要给多个服务同时发通知),可以在Glue任务的代码末尾加上调用SNS API的逻辑:

Python示例代码

import boto3

# 初始化SNS客户端,替换成你的AWS区域
sns_client = boto3.client('sns', region_name='us-east-1')

# 替换成你的SNS主题ARN
SNS_TOPIC_ARN = 'arn:aws:sns:us-east-1:123456789012:your-glue-completion-topic'

def send_completion_notification():
    try:
        sns_client.publish(
            TopicArn=SNS_TOPIC_ARN,
            Subject='Glue任务执行完成',
            Message='你的Glue数据加载任务已成功结束,请触发数据清洗流程'
        )
        print("SNS通知发送成功")
    except Exception as e:
        print(f"发送SNS通知失败:{str(e)}")

# 在Glue任务的核心数据加载逻辑完成后,调用这个函数
if __name__ == '__main__':
    # 这里是你的Glue数据加载主逻辑
    print("Glue数据加载任务执行完成")
    send_completion_notification()

接下来需要做两件事:

  1. 给Glue任务的IAM角色添加SNS:Publish的权限,确保它能往指定主题发消息
  2. 把你的数据清洗Lambda函数订阅到这个SNS主题上

这样就能实现「Glue任务结束→SNS发送通知→Lambda触发执行」的完整流程了。

额外小提示

  • 如果你需要区分任务成功/失败的场景,可以在EventBridge规则里添加多状态过滤,或者在SNS消息里携带任务状态信息,让Lambda根据不同状态执行不同逻辑
  • 一定要检查IAM权限配置,避免出现权限不足导致的触发失败问题

内容的提问来源于stack exchange,提问作者dd.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:43:49