使用AWS SAM为Lambda配置SNS目标以实现执行结果邮件通知
AWS SAM为Lambda配置SNS目标以实现执行结果邮件通知
我来帮你把这些组件完整串起来!下面是一个可直接使用的AWS SAM模板,涵盖了创建SNS主题、配置Lambda的执行结果目标,以及必要的权限设置,这样你的Lambda函数执行成功或失败时,就能自动触发SNS发送通知邮件了。
完整的template.yaml示例
AWSTemplateFormatVersion: '2010-09-09' Transform: 'AWS::Serverless-2016-10-31' Resources: # 1. 创建SNS主题,用于发送执行结果通知 ExecutionResultTopic: Type: AWS::SNS::Topic Properties: DisplayName: "Lambda执行结果通知" TopicName: "Lambda-Execution-Result-Topic" # 2. 你的Lambda函数,配置成功/失败目标指向SNS主题 MyFunction: Type: AWS::Serverless::Function Properties: FunctionName: "MyProcessingLambda" Runtime: python3.12 # 替换成你实际使用的运行时 Handler: app.lambda_handler # 替换成你的处理程序路径 CodeUri: ./src/ # 替换成你的代码目录 # 配置Lambda执行成功后的目标 OnSuccess: Destination: !Ref ExecutionResultTopic Type: SNS # 配置Lambda执行失败后的目标 OnFailure: Destination: !Ref ExecutionResultTopic Type: SNS # 给Lambda添加发布到SNS主题的权限 Policies: - Statement: - Effect: Allow Action: sns:Publish Resource: !Ref ExecutionResultTopic Outputs: # 输出SNS主题ARN,方便后续查看或订阅 ExecutionResultTopicArn: Value: !Ref ExecutionResultTopic Description: ARN of the SNS topic for Lambda execution results
关键部分说明
- SNS主题创建:我们先定义了一个SNS主题,设置了
DisplayName(邮件通知里会显示这个名称)和TopicName(主题的唯一标识)。 - Lambda目标配置:在Lambda的
Properties里添加了OnSuccess和OnFailure字段,分别指定了目标SNS主题的ARN,类型设为SNS,这样Lambda执行完成后会自动把结果推送到这个主题。 - 权限设置:通过
Policies给Lambda函数添加了sns:Publish的权限,确保Lambda有能力向SNS主题发送消息。 - 后续步骤:模板部署完成后,你需要在AWS控制台找到这个SNS主题,手动订阅你的邮件地址(订阅后需要确认邮箱),之后就能收到Lambda的执行结果通知了。
注意事项
- 如果你只想在成功或失败其中一种场景下发送通知,只保留对应的
OnSuccess或OnFailure配置即可。 - 运行时、Handler、CodeUri这些字段要替换成你实际的Lambda配置信息。
- 邮件通知的内容默认包含Lambda的执行结果、请求ID等信息,你也可以通过SNS的消息过滤或Lambda自定义输出内容来调整通知详情。
备注:内容来源于stack exchange,提问作者pbuchheit
相关产品推荐
相关产品推荐

