使用 Learner Lab - 使用 CloudWatch 进行排错,搭配 API Gateway 与 Lambda

news2024/11/15 10:42:51

使用 Learner Lab - 使用 CloudWatch 进行排错,搭配 API Gateway 与 Lambda

AWS Academy Learner Lab 是提供一个帐号让学生可以自行使用 AWS 的服务,让学生可以在 100 USD的金额下,自行练习所要使用的 AWS 服务,如何进入 Learner Lab 请参考 使用 Learner Lab - 学生,而这篇文章是使用 CloudWatch 进行排错,搭配 API Gateway 与 Lambda,透过 API Gateway 接收 GET 请求,而 Lambda 接收到请求后,取得请求字串并以 JSON 的格式回传。

步骤 1. 创建 Lambda 函数

AWS 网页控制台 上方的搜寻图示中输入 Lambda ,单击 Lambda 服务,如下图所示。

在这里插入图片描述
图 1. AWS 网页控制台中找寻 Lambda 服务

单击 创建函数 服务,如下图所示。

在这里插入图片描述
图 2. 创建 Lambda 函数

设定 Lambda 函数如下

  • 从头开始创作
    基本信息
  • 函数名称: getRequest
  • 运行时: Python 3.8
  • 架构: x86_64
    权限
  • 执行角色: 使用现有角色 LabRole (很重要、很重要、很重要)

在这里插入图片描述
图 3. 设定 Lambda 函数

步骤 2. 布署 Lambda 函数

因为这次代码的功能为读取用户透过 HTTP GET 请求所传递过来的参数列,代码如下:

import json

def lambda_handler(event, context):
    # 请求为 GET 
    if event['httpMethod']=='GET':
        result = event['queryStringParameters']
    else:
        result = "method not allowed"
    # TODO implement
    return {
        'statusCode': 200,
        'body': json.dump(result) # 故意打错字,应该是dumps
    }

修改完毕后单击 Deploy (布署),必须要先布署才算是将代码布署到云计算中。这次故意在代码中写错,因为只是布署,没有运行也不会发现错误所在。

步骤 3. 添加 API Gateway 触发器

在 Lambda 主画面上方找到添加触发器按钮,如下图所示。

在这里插入图片描述
图 4. 在 Lambda 主画面中进行添加触发器

进入添加触发器画面,配置如下:

添加触发器

  • 触发器配置: API Gateway
  • Intent: Create a new API
  • API type: HTTP API
  • Security: Open

在这里插入图片描述
图 5. 在添加触发器画面中进行 API Gateway 配置

添加触发器后可以在配置中查看触发器的结果,如下图所示。

在这里插入图片描述

图 6. 在配置中查看触发器

步骤 4. 测试 API Gateway 与 Lambda 的功能

复制上图中的 API endpoint,开启一个空白网页,贴上网址并输入要传递的参数 ?name=叶 ,得到的画面如下所示,显示了一个内部错误。

在这里插入图片描述
图 7. 使用浏览器观看运行结果

但是很遗憾的是这个代码是 API Gateway 收到用户的请求后,将数据透过 Lambda 中的 lambda_handler(event, context) 函数的 event 这个参数来传递,所以 Lambda 开发者也没办法透过测试来找出代码中的错误,于是我们需要借助 CloudWatch 来检视 Lambda 的执行状况。

步骤 5. 打开 CloudWatch logs 观察 Lambda 的执行状况

AWS 网页控制台 上方的搜寻图示中输入 CloudWatch ,单击 CloudWatch 服务,如下图所示。

在这里插入图片描述
图 8. AWS 网页控制台中找寻 CloudWatch 服务

在 CloudWatch 主画面左边的导航栏中找到日志组 (logs),接著找到对应的 lambda 函数日志组。

在这里插入图片描述
图 9. 在 CloudWatch 主画面中找到日志组 (logs)

在日誌組下方的日志流找到相对应的时间,单击该日志流。

在这里插入图片描述
图 10. 在日志流找到时间相对应的纪录

找到引发错误的日志记录,可以单击来打开看详细信息,以本例来说在 2022-12-04T14:28:50.938 这个时间点, lambda_function.py 这只程式的第 12 行出现了错误信息,主要是由 dump 这个方法所引起。

在这里插入图片描述
图 11. 在日志流找到时间相对应的纪录

于是回到步骤 2. 将原来的 Lambda 函数中的第 12 行代码修改,重新布署(Deploy)一次。

# 原先的
'body': json.dump(result)
# 修改后
'body': json.dumps(result)

再次使用浏览器观看运行结果,就可以得到预期的结果,如下图所示。

在这里插入图片描述
图 12. 使用浏览器观看运行结果

感谢亚马逊云科技王向炜 Alan Wang 提供的协助。

参考资料

  • 使用 Learner Lab - 使用 Lambda 转换图片为 base64 格式, https://blog.csdn.net/m0_50614038/article/details/128075734
  • 使用 Learner Lab - 使用 AWS Lambda 将图片写入 S3, https://blog.csdn.net/m0_50614038/article/details/128122934
  • 使用 Learner Lab - 使用 API Gateway 触发 AWS Lambda, https://blog.csdn.net/m0_50614038/article/details/128155030

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/59972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模型之单例设计

前言 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被…

3. Exchange 交换机的使用

二八佳人体似酥,腰间仗剑斩愚夫。虽然不见人头落,暗里教君骨髓枯。 在上一节中,我们创建了一个工作队列。我们假设的是工作队列背后,每个任务都恰好交付给一个消 费者(工作进程)。在这一部分中,我们将做一些完全不同的…

孪生神经网络

孪生神经网络 孪生神经网络(Siamese network)主要用途是比较两图片的相似程度,其核心思想就是权值共享。 卷积神将网络是通过卷积运算提取图像的特征进行训练的,如果想比较两个图像的相似程度,也要对两个图像分别进行…

毛里智慧小学宿舍楼工程量清单编制

目 录 摘 要 I 第1章 前言 1 第2章 招标控制价编制 3 2.1招标控制价 3 2.2建设项目招标控制价汇总表 4 2.3单项工程招标控制价汇总表 5 2.4单项工程招标控制价汇总表 14 2.5分部分项工程和单价措施项目清单与计价表 24 2.6总价措施项目清单与计价表 27 2.7综合单价分析表 28 2.…

C语言学习之路(基础篇)—— 文件操作(上)

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 概述 1) 磁盘文件和设备文件 磁盘文件 指一组相关数据的有序集合,通常存储在外部介质(如磁盘)上,使用时才调入内存。 设备文件 在操作…

亚马逊云科技re:Invent:Serverless是所有构想的核心

12月2日,2022亚马逊云科技re:Invent全球大会上,Amazon.com副总裁兼首席技术官Werner Vogels博士向开发者们展示了另一种可能。在一系列Serverless工具的帮助下,一些代码可以少写,因为未来你可能再也不需要写它们了。这恐怕是自云原…

包装类-Wrapper

包装类的分类 针对八种基本数据类型相应的引用类型-包装类有了类的特点,就可以调用对应的类中的方法 装箱和拆箱 Java是一种面向对象的编程语言,学习Java时就被明确灌输了一个概念:OOP,即面向对象编程。一切皆对象。但是基本…

[附源码]JAVA毕业设计框架的电脑测评系统(系统+LW)

[附源码]JAVA毕业设计框架的电脑测评系统(系统LW) 目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技…

Win11右键菜单反应慢有延迟解决方法分享

Win11右键菜单反应慢有延迟解决方法分享。有用户发现电脑鼠标点击右键菜单的时候,会出现一些延迟,导致自己在使用的过程中非常难受。那么这个问题如何自己去进行解决呢?我们一起来看看详细的解决方法分享吧。 解决方法: 注意&…

物联网IoT体系结构及核心技术

物联网,英文名为Internet of things(IoT),顾名思义,物联网就是物物相连的互联网。 这有两层意思: 1、物联网的核心和基础仍然是互联网,是在互联网基础上的延伸和扩展的网络; 2、从…

超级详细 的 Redis 安装教程

超级详细 的 Redis 安装教程 Windows 版本的 Redis 是 Microsoft 的开源部门提供的 Redis. 这个版本的 Redis 适合开发人员学习使用,生产环境中使用 Linux 系统上的 Redis, 这里讲解了这两种的安装和下载。按照你们需要的liunx 或window步骤来 就可以了(…

智能优化算法:法医调查优化算法 - 附代码

智能优化算法:法医调查优化算法 摘要:法医调查优化算法( Forensic-based investigation algorithm, FBI), 是由 Jui-Sheng Chou 等于2020 年提出的一种群体智能优化算法。其灵感来源于警官调查嫌疑人的过程。 1.法医调查优化算法 警察的大规模案件调查…

Java并发编程—线程详解

文章目录线程简介什么是线程多线程的使用什么时候需要使用多线程?写多少个线程比较合适?线程优先级靠谱的让出CPU的方法?线程的状态线程的状态有哪几种?线程的状态转换Daemon线程启动和终止线程构造线程启动线程理解中断如何安全的…

[附源码]计算机毕业设计基于Springboot的物品交换平台

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

逻辑回归模型和Python代码实现

文章目录逻辑回归原理sigmoid函数优化建模代码实现自编代码sklearn代码代码测试原理测试交叉验证逻辑回归原理 此前介绍的线性回归基本模型和增加了正则项的优化模型都只能用来预测连续值(标签值是多少),如果想要应用于分类问题(…

回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出

回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出 文章目录 回归预测 | MATLAB实现GRU(门控循环单元)多输入单输出预测效果基本介绍模型结构程序设计参考资料致谢预测效果 基本介绍 GRU神经网络是LSTM神经网络的一种变体,LSTM 神经网 络是在RNN的基础上发展起来的。RNN是一…

Python学习----网络编程

网络:网络就是实现资源共享和信息传递的虚拟平台,我们可以编写基于网络通信的程序。比如socket编程,web开发 Socket编程 Socket是程序之间通信的一个工具,好比显示生活中的电话,你知道了对方的电话号码之后&#xff…

RabbitMQ进阶

可以结合着狂神的RabbitMQ的笔记来进行学习 狂神说RabbitMQ笔记 RabbitMQ高级特性 消息可靠性投递 保证我发出的消息可以到达中间件,避免在传输的过程中发生丢失的情况。 这两个可靠性传输方式分别是负责不同的阶段,confirm是负责保证从生产者到队列…

[附源码]Python计算机毕业设计Django抗疫医疗用品销售平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

2023年江苏省职业院校技能大赛中职赛项规程样题

2023年江苏省职业院校技能大赛中职赛项规程 一、赛项名称 赛项编号:JSZ202335 赛项名称:网络安全 赛项组别:学生组、教师组 赛项归属专业大类:信息技术类 竞赛目的 贯彻落实《国家职业教育改革实施方案》《关于推动现代职业教…