范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

如何通过AWSCloudWatch日志订阅获取Lambda异常日志通知

  License: Attribution-NonCommercial-ShareAlike 4.0 International
  本文出自 Suzf Blog。 如未注明,均为 SUZF.NET 原创。
  转载请注明:https://suzf.net/post/1460
  这篇文章演示了如何使用  Amazon CloudWatch log subscription  自动对特定 AWS Lambda 函数错误发出警报通知。CloudWatch Logs 让您可以在日志条目与模式匹配时调用 Lambda 函数。  Amazon CloudWatch alarms  用于在错误发生时发出通知Lambda 函数;这个通知不会提供有关错误任何的细节。对于您需要在通知中显示具体说明错误的情况,您可以使用 CloudWatch Logs subscription来实现。CloudWatch Logs 订阅让您可以匹配日志中具有特定错误模式的条目,并收到有关这些错误详细信息的通知。这为您节省了额外的步骤解析日志。当在您的 Lambda 函数中检测到该错误模式时,您还可以将其用作构建自动反应措施的蓝图。
  这篇文章将向您介绍如何配置触发 AWS Lambda 函数来处理匹配日志的 CloudWatch 日志订阅。Lambda 函数使用  Amazon SNS  发送包含特定错误详细信息和日志位置的电子邮件。 解决方案架构图
  此解决方案的架构相对简单。您有一堆 Lambda 函数,您希望收到有关其特定严重错误的通知。CloudWatch Logs 从这些 Lambda 函数中过滤特定模式的日志。例如 ERROR、CRITICAL 或自定义错误。错误处理 Lambda 函数依次向 Amazon SNS 主题发布消息,可以订阅该主题以在发生错误时收到电子邮件。
  出于本文的目的,我们将使用以下示例 Lambda 函数生成错误日志: import logging import os  logging.basicConfig(level=logging.DEBUG) logger=logging.getLogger(__name__)   def lambda_handler(event, context):     logger.setLevel(logging.DEBUG)     logger.debug("This is a sample DEBUG message.. !!")     logger.error("This is a sample ERROR message.... !!")     logger.info("This is a sample INFO message.. !!")     logger.critical("This is a sample 5xx error message.. !!") 部署教程前置条件登陆  AWS Management Console . 具有权限创建以下资源:  IAM roles and policies , SNS topics, Lambda functions, and  CloudWatch event rules .
  要实施此解决方案,您必须创建: SNS topic IAM role Lambda function CloudWatch log trigger 步骤 1: 创建 SNS topic
  要创建 SNS 主题,请完成以下步骤: 打开 Amazon SNS console 在左侧导航栏选择  Topics 选择创建  topic . 选择  Standard 类型,输入 topic  name `MySNSTopic` 点击 Create topic. 创建 成功后自动跳转到 MySNSTopic 页面。详细信息部分显示主题的名称、ARN、显示名称(可选)和主题所有者的 AWS 账户 ID。在详情页面,拷贝 topic ARN到粘贴板,比如:  arn:aws:sns:us-east-1:123456789012:  MySNSTopic  在做了导航,选择  Subscriptions  and  Create subscription . 在  Create subscription  页面,做一下操作:输入之前拷贝的 topic ARN:  arn:aws:sns:us-east-1:123456789012:  MySNSTopic  Protocol 选择   EmailEndpoint , 输入可以接受邮件的邮件地址 选择 Create subscription . 请注意,对于电子邮件订阅,您必须通过点击电子邮件收到的确认订阅链接来确认订阅。确认订阅后,您就可以接收电子邮件通知了。 步骤 2: 创建 IAM role
  创建 IAM role, 需要完成一下操作。获取更多信息,请看  Creating an IAM role。 在  IAM console  页面, 在左侧导航栏 选择  Policies , 之后选择  Create Policy . 选择  JSON  选项卡 输入下面 IAM policy, 用之前创建的SNS topic ARN 替换  Topic ARN  : {     "Version": "2012-10-17",     "Statement": [         {             "Effect": "Allow",             "Action": "sns:Publish",             "Resource": "arn::sns:::"         },         {             "Effect": "Allow",             "Action": [                 "logs:CreateLogGroup",                 "logs:CreateLogStream",                 "logs:PutLogEvents"             ],             "Resource": "arn::logs:::log-group:/aws/lambda/:*"         }     ] }选择  Review policy . 给这个 policy 输入 name ( MyCloudWatchRole ) 并  Create policy。 记下此策略的名称以供后续步骤使用 在左侧导航栏, 选择  Roles  点击  Create role . 在  Select role type  页面, 选择 AWS 服务作为您的可信实体,并在常见用例下选择 Lambda。 选择  Next: Permissions. 过滤刚刚创建的策略名称,然后选中该复选框。 选择  Next: Tags , 并给它一个合适的标签。 选择  Next: Review . 为这个 IAM 角色指定一个合适的名称,并记下来以备将来使用。 选择  Create role . 步骤 3: 创建 Lambda function
  要创建 Lambda 函数,请完成以下步骤。 获取更多信息,参见  Create a Lambda Function with the console . 在  Lambda console , 选择  Author from scratch。 Function Name , 输入函数名称。 Runtime , 选择  Python 3.7 . Execution role , 选择  Use an existing role , 选择之间创建的 IAM role. 选择  Create Function , 移除 default function, 拷贝下列代码到  Function Code  窗口: # Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. # Licensed under the Apache License, Version 2.0 (the "License"). # You may not use this file except in compliance with the License. # A copy of the License is located at## http://aws.amazon.com/apache2.0/ # or in the "license" file accompanying this file. # This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, # either express or implied. See the License for the specific language governing permissions # and limitations under the License. # Description: This Lambda function sends an email notification to a given AWS SNS topic when a particular #              pattern is matched in the logs of a selected Lambda function. The email subject is #              Execution error for Lambda-. #              The JSON message body of the SNS notification contains the full event details.  # Author: Sudhanshu Malhotra  import base64 import boto3 import gzip import json import logging import os  from botocore.exceptions import ClientError  logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__)   def logpayload(event):     logger.setLevel(logging.DEBUG)     logger.debug(event["awslogs"]["data"])     compressed_payload = base64.b64decode(event["awslogs"]["data"])     uncompressed_payload = gzip.decompress(compressed_payload)     log_payload = json.loads(uncompressed_payload)     return log_payload   def error_details(payload):     error_msg = ""     log_events = payload["logEvents"]     logger.debug(payload)     loggroup = payload["logGroup"]     logstream = payload["logStream"]     lambda_func_name = loggroup.split("/")     logger.debug(f"LogGroup: {loggroup}")     logger.debug(f"Logstream: {logstream}")     logger.debug(f"Function name: {lambda_func_name[3]}")     logger.debug(log_events)     for log_event in log_events:         error_msg += log_event["message"]     logger.debug("Message: %s" % error_msg.split(" "))     return loggroup, logstream, error_msg, lambda_func_name   def publish_message(loggroup, logstream, error_msg, lambda_func_name):     sns_arn = os.environ["snsARN"]  # Getting the SNS Topic ARN passed in by the environment variables.     snsclient = boto3.client("sns")     try:         message = ""         message += " Lambda error  summary" + "  "         message += "########################################################## "         message += "# LogGroup Name:- " + str(loggroup) + " "         message += "# LogStream:- " + str(logstream) + " "         message += "# Log Message:- " + " "         message += "# 		" + str(error_msg.split(" ")) + " "         message += "########################################################## "          # Sending the notification...         snsclient.publish(             TargetArn=sns_arn,             Subject=f"Execution error for Lambda - {lambda_func_name[3]}",             Message=message         )     except ClientError as e:         logger.error("An error occured: %s" % e)   def lambda_handler(event, context):     pload = logpayload(event)     lgroup, lstream, errmessage, lambdaname = error_details(pload)     publish_message(lgroup, lstream, errmessage, lambdaname) 在  Environment variables  中,输入以下键值对:Key= snsARNValue= the ARN of the  MySNSTopic  created earlier 点击  Save . 步骤 4. 创建 CloudWatch log trigger要添加触发器,请选择添加触发器,然后从下拉列表中选择 CloudWatch Logs。 在  Log group  下拉列表,选择要获取错误通知的 Lambda 函数的 CloudWatch 日志组名称。在我们的例子中,这将是上面讨论的示例错误生成 Lambda 函数的日志组。 在过滤器名称输入适当的值,并在过滤器模式下,输入您希望收到通知的日志的过滤器值。例如 - "?ERROR ?WARN ?5xx" 将过滤 日志中包含 ERROR、WARN 或 5xx 的日志。  Log filter and pattern syntax  中包含更多其他复杂模式的示例。 启用 trigger & 添加 解决方案验证
  为验证我的解决方案,我将运行生成错误日志 Lambda 函数并过滤日志中包含 " ?ERROR ?WARN ?5xx " 的日志进行邮件通知,如下所示:
  同样,我可以为任何特定错误创建一个过滤器模式,例如过包含  5xx   的日志,并仅针对该错误日志获得以下通知:
  卸载
  为了避免持续收费,删除在前面的步骤中创建的资源,包括  CloudWatch Events rule Lambda function  和  SNS topic 结论
  这篇文章演示了如何使用 CloudWatch Log 过滤器来解析 Lambda 函数的日志并通过电子邮件通知过滤到的错误信息。有关进一步阅读,请参阅: Using Amazon CloudWatch and Amazon SNS to notify when AWS X-Ray detects elevated levels of latency, errors, and faults in your application CloudWatch Logs filter and pattern syntax 此文为翻译 源链接为 https://aws.amazon.com/blogs/mt/get-notified-specific-lambda-function-error-patterns-using-cloudwatch/
  感谢 Sudhanshu Malhotra 和 Rajat Mathur 的分享

4月德国贸易额2492亿欧元!和美国193亿,和英国94亿,和中国呢?根据一个国家的对外贸易额,可以初步判断该国的当前经济形势。日前,德国公布2022年4月份的对外贸易额,其总额为2492亿欧元,其中与美国为193亿,与英国为94亿,那中国呢?一德国不再和中国人吃饭?股神巴菲特经历了什么事情,为何怒气直言?靠资本炒作赚得千亿身价的巴菲特,是很多富人眼里的神话。因此,能够与他进行一次对话和吃饭的机会更是难得。股神巴菲特愤怒直言道不再和中国人吃饭,到底是因为什么呢?一著名的巴菲特午餐在纽2022世界女排联赛中国对阵比利时队,中国队3比0取胜龚翔宇得19分龚翔宇周二在菲律宾度过了美好的一天,带领她的球队取得了2022年女排国家联赛开始以来的第四场胜利。身高1。86的主攻手在进攻和拦网方面都为中国提供了动力,并且是最佳射手和最佳射手。蔡斌缺席真相浮现,归期已定,中国女排因祸得福,美国女排遭打击在世界女排联赛第二战的比赛中,中国女排30横扫比利时女排,取得开门红,如今中国队的成绩来到了傲人的4胜1负,在积分榜上仅落后日本女排,高居第二位。接下来,中国女排将迎来加拿大和美国陆奇怎么理解企业服务市场的数字化应用生态?VC洞见本文节选自陆奇博士2021年的演讲,我们整理了其中一节应用生态的发展历史与新机会B端,从应用数字化生态的历史发展角度,来梳理今天企业服务(toB市场)所面临的机会。在陆奇博士看来,国内17家驱动电机定转子供应商盘点新能源驱动电机的核心零部件是什么?无论是传统的圆线电机也好,还是时下火热的扁线电机也罢,核心之一,必然是定转子及其总成。今天我们就来看看,国内目前的定转子行业现状,以及17家代表性保卫萝卜4全平台预约人数突破1000万保卫萝卜4制作组宣布全平台预约人数突破1000万,预计6月30日公测,并且已经拿到AppStore的Today推荐。由凯罗天下(飞鱼科技的前身)研发的保卫萝卜,在2012年与玩家见45岁人工智能专家突发疾病去世!人到中年,身体频亮红灯,别再犯大忌6月14日,旷视科技官方微信发布讣告旷视首席科学家旷视研究院院长孙剑博士因突发疾病抢救无效,于2022年6月14日凌晨去世,终年45岁。据数智前线从内部人士处获悉,孙剑博士6月13宇宙的最后三分钟宇宙会如何灭亡?郑胜辉学习与思考第1661天关于作者保罗戴维斯是澳大利亚阿德莱德大学物理学教授,世界著名物理学家,同时也是一位能用简洁生动的语言解释深奥科学概念的大师。他的研究内容包括黑洞量子场论MULAN全球车型发布试水换电模式张亮MG要重回新能源赛道每经记者黄辛旭每经编辑裴健如MG在纯电领域蛰伏了多年,是想要等成熟的技术落地。这样一来,我们的产品一推出就会极具竞争力。日前,上汽数据业务部副总经理乘用车公司首席数字官(CDO)兼直播带货四大天王退场,谁会是新的顶流?6月13日,罗永浩在微博发表长文,宣告正式退网,转战AR再创业。尽管早前声称对直播不感兴趣,但为了还债,老罗还是从科技创业者短暂地进化成了直播带货四大天王中的老四。如今的四大天王都
印媒苹果或同时在印度和中国生产新款iPhone,看印度网友怎么说iPhone14tobemanufacturedinIndiaReportsiPhone14将在印度生产?AppleislikelytostartmanufacturingiPho那些看哭的作文,都是人间疾苦?有人说地狱只有十七层,第十八层在人间。也许这句话是对的,有些人的疾苦,需要用一生去治愈。当我们自己过的不如意的时候,还是会同情其他人悲惨的人生,下面看看别人笔下的人生疾苦吧!父母离那些看一眼,就忍不住摘抄的优美句子(1)头条创作挑战赛1那时我们有梦,关于文学,关于爱情,关于穿越世界的旅行。如今我们深夜饮酒,杯子碰到一起,都是梦破碎的声音。北岛波兰来客2玻璃晴朗,橘子辉煌。北岛过节3只要心在跳动,就那些人间真实写照,讽刺这个世界车上的人都在看手机只有你在看书,就显得格格不入,都拿出各自的手机拍照记录这一精彩时刻,好像又在嘲讽现在社会现状不管前面的路有多难,不管自身条件有多差,自己依然在前进,没有原地踏步,四川副省长千金孟军下嫁任正非,生下孟晚舟,离婚后过得很潇洒头条创作挑战赛大家都听说过任正非这个名字。这是中国知名企业家,华为技术有限公司创始人。有人说,每个成功男人的背后,都有一个默默无闻的付出的女人。是真的。如今红遍全球的华为创始人任,研究证实家蚕起源于黄河中下游地区新华社重庆10月10日电家蚕是重要的经济昆虫,在我国有5000多年的驯养历史,但其驯化起源地却长期悬而未定。来自西南大学的研究团队日前完成家蚕大规模种质资源基因组解析,绘就了首张家新研究发现,被子盖的重,晚上睡得香,重被子增加褪黑素产生谁能在冬季拒绝一个温暖的被窝,特别是躺在刚晒的蓬松的棉花被里,沉沉的重量,将人封印在床上,连带着些纷杂的思绪也一同被镇压,一夜好梦。为什么比起新式的羽绒被蚕丝被,还是老家的棉花被更从社会治理与消费心理层面解读海克斯科技话题截至9月29日,某短视频平台,海克斯科技话题的播放量超过了15。2亿次科技与狠活的播放量超过了9亿次三花淡奶的播放量超过了5。7亿次,有关话题引发社会广泛关注与热议。近日,中国食品当涂划区还是设县级市?当涂县该划区还是划县级市?2021年当涂县GDP520亿元,居安徽省第九名,人均GDP居安徽省第一名,是安徽名副其实的经济强县。交通上除了有宁安城际高铁当涂东站,也规划建设了巢马城今晚24时油价调整最新消息本次汽柴油价格不作调整国家发改委2022年10月10日国内成品油价格不作调整自2022年9月21日国内成品油价格调整以来,国际市场油价震荡运行,按现行国内成品油价格机制测算,10月10日的前10个工作日邮储银行股价一度跌超6,午间公告前三季贷款增量创历史新高10月10日早盘开盘后,邮储银行(601658。SH,01658。HK)A股一度跌超6。午盘收盘后,邮储银行发布关于持续服务实体经济提高经营质效的公告(下称公告)护盘。公告披露了该