当前位置: 首页 > news >正文

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"}

逻辑上我们已经对外提供了接口,但是访问报错,这可能是由于两个因素导致的

  1. 中国区没有备案,不允许匿名访问
  2. 没有权限访问

因此,这里我们使用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&#xff0c;基础服务用来管理接口的创建&#xff0c;部署和管理restapi&#xff0c;http资源和方法的集合&#…...

2023年“中银杯”安徽省职业院校技能大赛网络安全A模块全过程解析

A模块基础设施设置/安全加固(200分) 一、项目和任务描述: 假定你是某企业的网络安全工程师,对于企业的服务器系统,根据任务要求确保各服务正常运行,并通过综合运用登录和密码策略、流量完整性保护策略、事件监控策略、防火墙策略等多种安全策略来提升服务器系统的网络安全…...

【Python入门第二十四天】Python 迭代器

Python 迭代器 迭代器是一种对象&#xff0c;该对象包含值的可计数数字。 迭代器是可迭代的对象&#xff0c;这意味着您可以遍历所有值。 从技术上讲&#xff0c;在 Python 中&#xff0c;迭代器是实现迭代器协议的对象&#xff0c;它包含方法 iter() 和 next()。 迭代器 V…...

Qt扫盲-CMake 使用概述

CMake 使用概述一、概述二、创建Qt CMake 项目三、简单介绍1. 引入Qt的库2.Qt CMake 引入第三方库3. Qt CMake 项目目录四、使用案例一、概述 CMake是一个简化跨不同平台开发项目的构建过程的工具。对C来说其实就是生成一个文件&#xff0c;文件里面描述了&#xff0c;怎么组织…...

minGW-w64配置途径

文章目录1 GNU、GCC与minGW2 minGW当前下载方式3 minGW-w64配置途径Step1Step2Step31 GNU、GCC与minGW GNU这个名字是GNUs Not Unix的递归首字母缩写&#xff0c;它的发音为[gnoo]&#xff0c;只有一个音节&#xff0c;发音很像"grew"&#xff0c;但需要把其中的r音替…...

程序、进程、线程的基本概念、信号量的PV操作、前趋图的PV操作

程序、进程、线程的基本概念 进程控制块PCB的组织方式&#xff1a;顺序方式、链接方式、索引方式、Hash。 在JVM 中进程与线程关系 进程&#xff1a; 拥有资源的独立单位。可以被独立调度。可以分配资源。 线程&#xff1a; 可以被独立调度。同一进程中的多个线程&#xff0c;…...

设计测试用例

目录 测试用例的基本要素 测试用例的设计方法 功能需求测试分析 非功能需求测试分析 设计测试用例的具体方法 测试用例的基本要素 测试用例&#xff08;Test Case&#xff09;是为了实施测试而向被测试的系统提供的一组集合&#xff0c;这组集合包含&#xff1a;测试环境…...

CSS 选择器以及CSS常用属性

目录 &#x1f407;今日良言:可以不光芒万丈,但不要停止发光 &#x1f42f;一、写CSS的三种方法 &#x1f42f;二、CSS选择器的常见用法 &#x1f42f;三、CSS常用属性 &#x1f407;今日良言:可以不光芒万丈,但不要停止发光 &#x1f42f;一、写CSS的三种方法 CSS的基本语…...

测试概念及模型

今日目标掌握测试用例包含的基本内容使用等价类方法设计出测试用例1. 软件测试分类&#xff08;复习&#xff09;1.1 按阶段划分单元测试测试&#xff1a;针对单个功能进行测试&#xff0c;如&#xff1a;登录、购物车等开发&#xff08;更多的理解&#xff09;&#xff1a;针对…...

王道计算机组成原理课代表 - 考研计算机 第六章 总线 究极精华总结笔记

本篇博客是考研期间学习王道课程 传送门 的笔记&#xff0c;以及一整年里对 计算机组成 知识点的理解的总结。希望对新一届的计算机考研人提供帮助&#xff01;&#xff01;&#xff01; 关于对 “总线” 章节知识点总结的十分全面&#xff0c;涵括了《计算机组成原理》课程里的…...

【C++升级之路】第八篇:string类

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【C学习与应用】 ✒️✒️本篇内容&#xff1a;简单介绍string类的概念、string类的常用接口、string类的模拟实现&#xff08;各个常见接口的实现代码&…...

mysql性能优化_原理_课程大纲

1、MySQL在金融互联网行业的企业级安装部署 目录章节版本说明版本说明安装MySQL规范1 安装方式2 安装用户3 目录规范MySQL 5.7 安装部署1 操作系统配置2 创建用户3 创建目录4 安装5 配置文件6 安装依赖包7 配置环境变量8 初始化数据库9 重置密码MySQL8 安装MySQL8 安装源码安装…...

项目管理报告工具的功能

项目报告软件哪个好&#xff1f;Zoho Projects的项目管理报告工具为您提供整个组织的360可见性&#xff0c;获取所有项目的实时更新&#xff0c;使用强大的项目报告软件推动成功。Zoho Projects的项目报告软件允许团队整理和监控他们的资源和项目&#xff0c;以评估进度并避免对…...

centos8上安装hbase

【README】1.本文部分内容转自&#xff1a;https://computingforgeeks.com/how-to-install-apache-hadoop-hbase-on-centos-7/2.本文是在单机上安装hbase &#xff08;仅用于学习交流&#xff09;&#xff1b; 【1】更新系统因为 hadoop和hbase是动态的&#xff0c;为便于hbase…...

linux 进程及调度基础知识

引用Linux进程管理专题Linux进程管理与调度-之-目录导航Linux下0号进程的前世(init_task进程)今生(idle进程)----Linux进程的管理与调度&#xff08;五&#xff09;蜗窝科技-进程管理郭健&#xff1a; Linux进程调度技术的前世今生之“前世”郭健&#xff1a; Linux进程调度技术…...

Python计算分类问题的评价指标(准确率、精确度、召回率和F1值,Kappa指标)

机器学习的分类问题常用评论指标有&#xff1a;准确率、精确度、召回率和F1值&#xff0c;还有kappa指标 。 每次调包去找他们的计算代码很麻烦&#xff0c;所以这里一次性定义一个函数&#xff0c;直接计算所有的评价指标。 每次输入预测值和真实值就可以得到上面的指标值&a…...

51单片机LCD1602的使用

文章目录前言一、LCD1602简单介绍二、LCD1602中各个引脚的作用四、LCD1602命令解析1.写命令2.写数据3.清屏指令4.光标归位指令5.进入模式设置指令6.显示开关控制指令7.设定显示屏或光标移动方向指令三、LCD1602代码编写四、代码测试总结前言 本篇文章将为大家讲解LCD1602的使用…...

[深入理解SSD系列综述 1.5] SSD固态硬盘参数图文解析_选购固态硬盘就像买衣服?

版权声明&#xff1a;付费作品&#xff0c;未经许可&#xff0c;不可转载前言SSD &#xff08;Solid State Drive&#xff09;&#xff0c;即固态硬盘&#xff0c;通常是一种以半导体闪存&#xff08;NAND Flash&#xff09;作为介质的存储设备。SSD 以半导体作为介质存储数据&…...

zio1升级到zio2踩坑和总结

并不全&#xff0c;记录了一些流程和注意点。新项目建议直接用zio2&#xff01; 首先&#xff0c;从1.0迁移到2.0&#xff0c;可以使用官方的scalefix规则完成一部分方法自动替换&#xff08;迁移主要解决方法重命名&#xff0c;去掉Has&#xff09;。 然后&#xff0c;添加依…...

【算法题】1834. 单线程 CPU

插&#xff1a; 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家一起学习鸭~~~ 题目&#xff1a; 给你一个二维数组 tasks &#xff…...

Vue学习[2023]

笔记 一、Vue基础&#xff1a; 1.模板语法有2大类&#xff1a; 插值语法&#xff1a; 功能&#xff1a;用于解析标签体内容。 写法&#xff1a;{{xxx}}&#xff0c;xxx是js表达式&#xff0c;且可以直接读取到data中的所有属性。 指令语法&#xff1a; 功能&#xff1a;用于…...

【Redis】Redis分片集群

【Redis】Redis分片集群 文章目录【Redis】Redis分片集群1. 搭建分片集群1.1 分片集群结构1.2 搭建分片集群1.2.1 集群结构1.2.2 准备实例和配置1.2.3 启动1.2.4 创建集群1.2.5 测试2. 散列插槽2.1 总结3. 集群伸缩4. 故障转移4.1 数据迁移5. RedisTemplate访问分片集群1. 搭建…...

【Android笔记81】Android之RxJava的介绍及其使用

这篇文章,主要介绍Android之RxJava及其使用。 目录 一、RxJava响应式编程 1.1、RxJava介绍 1.2、RxJava常用方法 (1)引入RxJava依赖...

Pr 定格拍照动画

哈喽&#xff0c;各位小伙伴&#xff01;今天我们来学习一下如何制作定格拍照动画&#xff1f; ​ 新建序列 新建一个1920*1080的序列&#xff0c;将视频拖入序列中 选择定格画面右键—插入帧定格分段中间部分就会变成一张图片&#xff08;图片时长可伸缩&#xff09; 复制素…...

放弃node-sass,启用sass

在下载一个新项目时运行&#xff1a;npm run install 发现报错 npm uninstall 异常 Error: Could not find any Visual Studio installation to use 或是 ------------------------- You need to install the latest version of Visual Studio npm ERR! gyp ERR! find VS incl…...

力扣旋转字符串

&#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言初阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>:介绍字符串旋转,左旋,右旋即旋转结果. 金句分享: ✨好好干&…...

Java 代码组织机制

包 使用任何语言进行编程都有一个相同的问题&#xff0c;就是命名冲突。 包类似于计算机中的文件夹&#xff0c;正如文件放在文件夹中&#xff0c;类和接口放在包中&#xff0c;为便于组织&#xff0c;文件夹一般是一个层次结构&#xff0c;包也类似。 包有包名&#xff0c;…...

【剧前爆米花--爪哇岛寻宝】MySQL中索引和事务

作者&#xff1a;困了电视剧 专栏&#xff1a;《MySQL数据库》 文章分布&#xff1a;这是一篇关于Java中异常类的文章&#xff0c;在本篇文章中详细讲解了异常的使用逻辑和底层的执行过程&#xff0c;如有疏漏&#xff0c;欢迎大佬指正&#xff01; 目录 索引 用法 底层逻辑…...

C++ 线程库

文章目录thread 创建mutexmutexrecursive_mutextimed_mutexlock_guard原子操作atomic条件变量condition_variable其他线程安全问题shared_ptr单例模式C 线程库是 C11 标准中引入的一个特性&#xff0c;它使得 C 在语言级别上支持多线程编程&#xff0c;不需要依赖第三方库或操作…...

python字典和集合——笔记

一、介绍 1、泛映射类型 collections.abc模块中有Mapping和MutableMapping这两个抽象基类&#xff0c;它们的作用是为dict和其他类似的类型定义形式接口&#xff08;在Python 2.6到Python 3.2的版本中&#xff0c;这些类还不属于collections.abc模块&#xff0c;而是隶属于coll…...