aws apigateway 基础概念和入门示例
参考资料
- https://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/getting-started.html
apigateway基础理解
apigateway的核心概念
- apigateway,基础服务用来管理接口的创建,部署和管理
- restapi,http资源和方法的集合,可以根据应用程序的逻辑形成资源树。能够与http,lambda和其他aws服务集成,多阶段部署
- httpapi,由路由和方法组成,可以与http和lambda集成,多阶段部署
- websocketapi,由路由和路由键组成,能够与http,lambda,和其他aws服务集成,多阶段部署
- deployment,api状态的实时快照,与api阶段关联
- endpoint,apigateway的特定主机名,分为边缘优化,私有和区域端点
- apikey,用来标识开发人员的唯一标识,可以由apigateway生成
- stage,api生命周期的指针
- callbackurl,使用websocket时,客户新连接会在apigateway中存储回调url,用来主动推动信息
- edge-optimized endpoint,默认的终端节点,实际是由cloudfront转发的最近区域端点、
- 集成请求和响应,见下文
- Mapping template,apugateway前后端数据映射的模板
- 方法请求和响应,见下文
- Mock integration,apigateway mock响应,不需要后端
- Private integration,通过私有端点访问vpc内部资源,不需要暴露公网
- Proxy integration。可以设置HTTP 代理集成或 Lambda 代理集成,代理集成下不会对请求进行额外处理,直接转发
apigateway3个用例
区别和比较,https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vs-rest.html
- REST APIs,In API Gateway REST APIs, the frontend is encapsulated by method requests and method responses. The API interfaces with the backend by means of integration requests and integration responses. You can configure the integration response to map required response parameters from integration to method
- HTTP APIs,lower latency and lower cost. use HTTP APIs to send requests to AWS Lambda functions or to any publicly routable HTTP endpoint
- WebSocket APIs,the client and the server can both send messages to each other at any time. Can integrated with lambda kinesis and HTTP endpoint.
apigateway的请求逻辑
apigateway的restapi用来集成后端http服务,lambda函数和其他aws服务,将这些服务通过资源和方法暴露出去
例如,/incomes使资源,而其上的GET/POST/PUT等操作即方法
总体的请求逻辑可以分为以下两个阶段
-
方法请求和方法响应,应用程序和apigateway之间的通信
-
集成请求和集成响应,apigateway和后端之间的通信
由于以上两个阶段的请求格式和处理逻辑不同,因此需要apigateway将方法请求转换为集成请求,将集成响应转换为方法响应(通过定义schema和model实现)

apigateway集成的方式

入门示例
创建lambda函数,使用nodejs16运行时,保留默认代码即可
export const handler = async (event) => {const response = {statusCode: 200,body: JSON.stringify('Hello World!'),};return response;
};
创建httpapi,相比restapi功能少,费用低
- 创建httpapi
- 选择lambda集成
- 测试api调用
这里需要注意,lambda集成的负载格式分为v1和v2
https://docs.amazonaws.cn/apigateway/latest/developerguide/http-api-develop-integrations-lambda.html

保留贪婪匹配,直接下一步自动部署

在lambda函数界面可以看到自动添加基于资源的策略

{"Version": "2012-10-17","Id": "default","Statement": [{"Sid": "a2bb716b-d866-538b-b02d-db66f38db633","Effect": "Allow","Principal": {"Service": "apigateway.amazonaws.com"},"Action": "lambda:InvokeFunction","Resource": "arn:aws-cn:lambda:cn-north-1:xxxxxxxxxxx:function:my-function","Condition": {"ArnLike": {"AWS:SourceArn": "arn:aws-cn:execute-api:cn-north-1:xxxxxxxxxxx:8qpcm7sc5d/*/*/my-function"}}}]
}
同样在apigateway控制台能看到相应的添加权限操作

尝试访问生成的终端节点

$ curl https://8qpcm7sc5d.execute-api.cn-north-1.amazonaws.com.cn/my-function
{"message":"Forbidden"}
逻辑上我们已经对外提供了接口,但是访问报错,这可能是由于两个因素导致的
- 中国区没有备案,不允许匿名访问
- 没有权限访问
因此,这里我们使用iam授权
https://docs.amazonaws.cn/apigateway/latest/developerguide/http-api-access-control-iam.html
注意,httpapi不支持基于资源的策略,因此请求方需要sigv4签名,并且具有execute-api权限
aws apigatewayv2 update-route \--api-id 8qpcm7sc5d \--route-id 9f5s6fh \--authorization-type AWS_IAM
这里的routeid有点隐蔽

我们在之前的文章中讨论过鉴权的问题,当时是使用postman工具,这里用awscurl替代下,用来快速测试apigateway很是方便
https://github.com/okigan/awscurl
使用默认凭证访问apigateway
$ awscurl --service execute-api -X POST -d @request.json https://<prefix>.execute-api.us-east-1.amazonaws.com/<resource>
$ awscurl --service execute-api -X GET https://8qpcm7sc5d.execute-api.cn-north-1.amazonaws.com.cn/my-function --region cn-north-1
"Hello from Lambda!"
相关文章:
aws apigateway 基础概念和入门示例
参考资料 https://docs.aws.amazon.com/zh_cn/apigateway/latest/developerguide/getting-started.html apigateway基础理解 apigateway的核心概念 apigateway,基础服务用来管理接口的创建,部署和管理restapi,http资源和方法的集合&#…...
2023年“中银杯”安徽省职业院校技能大赛网络安全A模块全过程解析
A模块基础设施设置/安全加固(200分) 一、项目和任务描述: 假定你是某企业的网络安全工程师,对于企业的服务器系统,根据任务要求确保各服务正常运行,并通过综合运用登录和密码策略、流量完整性保护策略、事件监控策略、防火墙策略等多种安全策略来提升服务器系统的网络安全…...
【Python入门第二十四天】Python 迭代器
Python 迭代器 迭代器是一种对象,该对象包含值的可计数数字。 迭代器是可迭代的对象,这意味着您可以遍历所有值。 从技术上讲,在 Python 中,迭代器是实现迭代器协议的对象,它包含方法 iter() 和 next()。 迭代器 V…...
Qt扫盲-CMake 使用概述
CMake 使用概述一、概述二、创建Qt CMake 项目三、简单介绍1. 引入Qt的库2.Qt CMake 引入第三方库3. Qt CMake 项目目录四、使用案例一、概述 CMake是一个简化跨不同平台开发项目的构建过程的工具。对C来说其实就是生成一个文件,文件里面描述了,怎么组织…...
minGW-w64配置途径
文章目录1 GNU、GCC与minGW2 minGW当前下载方式3 minGW-w64配置途径Step1Step2Step31 GNU、GCC与minGW GNU这个名字是GNUs Not Unix的递归首字母缩写,它的发音为[gnoo],只有一个音节,发音很像"grew",但需要把其中的r音替…...
程序、进程、线程的基本概念、信号量的PV操作、前趋图的PV操作
程序、进程、线程的基本概念 进程控制块PCB的组织方式:顺序方式、链接方式、索引方式、Hash。 在JVM 中进程与线程关系 进程: 拥有资源的独立单位。可以被独立调度。可以分配资源。 线程: 可以被独立调度。同一进程中的多个线程,…...
设计测试用例
目录 测试用例的基本要素 测试用例的设计方法 功能需求测试分析 非功能需求测试分析 设计测试用例的具体方法 测试用例的基本要素 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境…...
CSS 选择器以及CSS常用属性
目录 🐇今日良言:可以不光芒万丈,但不要停止发光 🐯一、写CSS的三种方法 🐯二、CSS选择器的常见用法 🐯三、CSS常用属性 🐇今日良言:可以不光芒万丈,但不要停止发光 🐯一、写CSS的三种方法 CSS的基本语…...
测试概念及模型
今日目标掌握测试用例包含的基本内容使用等价类方法设计出测试用例1. 软件测试分类(复习)1.1 按阶段划分单元测试测试:针对单个功能进行测试,如:登录、购物车等开发(更多的理解):针对…...
王道计算机组成原理课代表 - 考研计算机 第六章 总线 究极精华总结笔记
本篇博客是考研期间学习王道课程 传送门 的笔记,以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助!!! 关于对 “总线” 章节知识点总结的十分全面,涵括了《计算机组成原理》课程里的…...
【C++升级之路】第八篇:string类
🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【C学习与应用】 ✒️✒️本篇内容:简单介绍string类的概念、string类的常用接口、string类的模拟实现(各个常见接口的实现代码&…...
mysql性能优化_原理_课程大纲
1、MySQL在金融互联网行业的企业级安装部署 目录章节版本说明版本说明安装MySQL规范1 安装方式2 安装用户3 目录规范MySQL 5.7 安装部署1 操作系统配置2 创建用户3 创建目录4 安装5 配置文件6 安装依赖包7 配置环境变量8 初始化数据库9 重置密码MySQL8 安装MySQL8 安装源码安装…...
项目管理报告工具的功能
项目报告软件哪个好?Zoho Projects的项目管理报告工具为您提供整个组织的360可见性,获取所有项目的实时更新,使用强大的项目报告软件推动成功。Zoho Projects的项目报告软件允许团队整理和监控他们的资源和项目,以评估进度并避免对…...
centos8上安装hbase
【README】1.本文部分内容转自:https://computingforgeeks.com/how-to-install-apache-hadoop-hbase-on-centos-7/2.本文是在单机上安装hbase (仅用于学习交流); 【1】更新系统因为 hadoop和hbase是动态的,为便于hbase…...
linux 进程及调度基础知识
引用Linux进程管理专题Linux进程管理与调度-之-目录导航Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度(五)蜗窝科技-进程管理郭健: Linux进程调度技术的前世今生之“前世”郭健: Linux进程调度技术…...
Python计算分类问题的评价指标(准确率、精确度、召回率和F1值,Kappa指标)
机器学习的分类问题常用评论指标有:准确率、精确度、召回率和F1值,还有kappa指标 。 每次调包去找他们的计算代码很麻烦,所以这里一次性定义一个函数,直接计算所有的评价指标。 每次输入预测值和真实值就可以得到上面的指标值&a…...
51单片机LCD1602的使用
文章目录前言一、LCD1602简单介绍二、LCD1602中各个引脚的作用四、LCD1602命令解析1.写命令2.写数据3.清屏指令4.光标归位指令5.进入模式设置指令6.显示开关控制指令7.设定显示屏或光标移动方向指令三、LCD1602代码编写四、代码测试总结前言 本篇文章将为大家讲解LCD1602的使用…...
[深入理解SSD系列综述 1.5] SSD固态硬盘参数图文解析_选购固态硬盘就像买衣服?
版权声明:付费作品,未经许可,不可转载前言SSD (Solid State Drive),即固态硬盘,通常是一种以半导体闪存(NAND Flash)作为介质的存储设备。SSD 以半导体作为介质存储数据&…...
zio1升级到zio2踩坑和总结
并不全,记录了一些流程和注意点。新项目建议直接用zio2! 首先,从1.0迁移到2.0,可以使用官方的scalefix规则完成一部分方法自动替换(迁移主要解决方法重命名,去掉Has)。 然后,添加依…...
【算法题】1834. 单线程 CPU
插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 坚持不懈,越努力越幸运,大家一起学习鸭~~~ 题目: 给你一个二维数组 tasks ÿ…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
【VLNs篇】07:NavRL—在动态环境中学习安全飞行
项目内容论文标题NavRL: 在动态环境中学习安全飞行 (NavRL: Learning Safe Flight in Dynamic Environments)核心问题解决无人机在包含静态和动态障碍物的复杂环境中进行安全、高效自主导航的挑战,克服传统方法和现有强化学习方法的局限性。核心算法基于近端策略优化…...
C/C++ 中附加包含目录、附加库目录与附加依赖项详解
在 C/C 编程的编译和链接过程中,附加包含目录、附加库目录和附加依赖项是三个至关重要的设置,它们相互配合,确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中,这些概念容易让人混淆,但深入理解它们的作用和联…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
Windows电脑能装鸿蒙吗_Windows电脑体验鸿蒙电脑操作系统教程
鸿蒙电脑版操作系统来了,很多小伙伴想体验鸿蒙电脑版操作系统,可惜,鸿蒙系统并不支持你正在使用的传统的电脑来安装。不过可以通过可以使用华为官方提供的虚拟机,来体验大家心心念念的鸿蒙系统啦!注意:虚拟…...
