#API GATEWAY TEST 知识点
1
API gateway 可以整合后端服务类型如下
Lambda Function
HTTP
Mock
Aws Service
VPC LINK
2
API GATEWAY支持你将后端服务设置在自己的数据中心,通过Direct Connect连接到你的VPC,然后通过VPC link或者NLB的方式对外提供整合服务
At re:Invent 2017, we announced endpoint integrations inside a private VPC. With this capability, you can now have your backend running on EC2 be private inside your VPC without the need for a publicly accessible IP address or load balancer. Beyond that, you can also now use API Gateway to front APIs hosted by backends that exist privately in your own data centers, using AWS Direct Connect links to your VPC. Private integrations were made possible via VPC Link and Network Load Balancers, which support backends such as EC2 instances, Auto Scaling groups, and Amazon ECS using the Fargate launch type.
3
为了防止过多请求耗尽 API,Amazon API Gateway 将使用令牌桶算法 (其中,一个令牌即一个请求) 限制对 API 的请求。具体来说,API Gateway 针对账户中的所有 API 设置请求提交稳态速率限制和突增限制。在令牌桶算法中,突增即存储桶的最大大小。
如果请求提交超过稳态请求速率和突增限制,则 API Gateway 将使超出限制的请求失败,并向客户端返回 429 Too Many Requests 错误响应。捕获此类异常后,客户端可以立即以速率限制的方式重新提交失败的请求,同时遵守 API Gateway 限制
作为 API 开发人员,您可以针对各个 API 阶段或方法设置限制,以提高账户中所有 API 的整体性能。或者,您可以启用使用计划,将客户端请求提交限制在指定的请求速率和配额内。这将限制请求提交的总量,使它们不会大幅超过账户级别的限制。
默认情况下,API Gateway 将稳态请求速率限制在每秒 10000 个请求 (rps)。它将一个 AWS 账户中所有 API 的突增 (即存储桶的最大大小) 限制在 5000 个请求。在 API Gateway 中,突增限制对应于 API Gateway 在不返回 429 Too Many Requests 错误响应的情况下在任意时刻可以完成的最大并发请求提交数量。为帮助理解这些限制,这里有几个示例,其采用突增限制和默认账户级别速率限制
如果调用方在一秒内均匀地提交 10000 个请求 (例如每毫秒提交 10 个请求),则 API Gateway 会处理所有请求,不会删除任何请求。
如果调用方在第一毫秒发送 10000 个请求,则 API Gateway 会响应其中 5000 个请求,并限制一秒内的剩余请求数量。
如果调用方在第一毫秒提交 5000 个请求,然后在剩余 999 毫秒内均匀提交另外 5000 个请求 (例如每毫秒大约提交 5 个请求),则 API Gateway 会在一秒内处理所有 10000 个请求,不会返回 429 Too Many Requests 错误响应。
如果调用方在第一毫秒提交 5000 个请求,然后等到第 101 毫秒再提交另外 5000 个请求,则 API Gateway 会处理 6000 个请求,并限制一秒内的剩余请求数量。这是因为,在 10000 rps 的速率下,API Gateway 已经在前 100 毫秒响应了 1000 个请求,因此清空了同样数量的存储桶。在接下来的 5000 个请求高峰中,有 1000 个请求会进入存储桶并排队等待处理。其他 4000 个超出存储桶容量的请求会被丢弃。
如果调用方在第一毫秒提交 5000 个请求,在第 101 毫秒提交 1000 个请求,然后在剩余 899 毫秒内均匀提交另外 4000 个请求,则 API Gateway 会在一秒内处理所有 10000 个请求,不会施加限制。
您可以在 Amazon API Gateway 中启用 API 缓存以缓存终端节点的响应。借助缓存,您可以减少向终端节点发起的调用数量,同时减少向 API 发出的请求的延迟。为某个阶段启用缓存时,API Gateway 会在指定的生存时间 (TTL) 期间 (以秒为单位) 缓存来自终端节点的响应。然后,在响应请求时,API Gateway 会从缓存中查找终端节点响应,而不会向终端节点发出请求。API 缓存的默认 TTL 值为 300 秒。最大 TTL 值为 3600 秒。TTL = 0 表示缓存功能处于禁用状态。
4
- 更普遍的情况是,在给定的某个时间,当存储桶包含 b 且存储桶最大容量为 B 时,可添加到存储桶的最大额外令牌数量为 Δ=B-b。这个最大额外令牌数量对应于客户端在不收到任何 429 错误响应的情况下可以提交的最大额外并发请求数量。一般而言,Δ 随时间变化。值的范围从存储桶已满时的零 (即 b=B) 到存储桶为空时的 B (即 b=0)。范围取决于请求处理速率 (令牌从存储桶中删除的速率) 和速率限制速率 (令牌添加到存储桶中的速率)。
5
账户级的throttle限制是可以更改的;默认值的10000每秒的访问量,5000每毫秒的并发量;
Amazon API Gateway 使用计划现在允许您配置方法级的限制,从而按不同的速率限制具体方法的请求。
借助使用计划,您可以向客户赋予按规定的请求率和配额使用选定的 API 的权限。通过在使用计划中包含方法级的限制,您可以为不同的 API 方法配置单个客户端 API 密钥的限制(速率和突增限制)。这样您可以根据具体使用案例,为 API 设置更精细的访问控制。
6
在API GATEWAY中控制访问的设置有如下内容
Resource policy:让你创建基于resource的策略,允许或者拒绝指定的IP或者vpc endpoint来访问指定的API 方法;
Standard AWS IAM role and policy:提供一个灵活的高访问权限能被使用于API和个人方法;
CORS:控制API的跨域访问;
Lambda authorizers:是Lambda函数控制访问API方法
Amazon Cognito user pool:定制授权信息和鉴权解决方案;
Client-side ssl certificate:客户端传输加密;
Usage plans:向用户提供api,并限制访问方法和策略;
7
- 如果API GATEWAY需要限制不允许被特定的服务器访问,可以通过cros和resource policy进行访问限制,进行IP地址等相关内容的限制;
8
如果选择一个是AWS默认提供的保护API GATEWAY的安全手段,那么只能是防DDOS攻击的安全服务;
其他的设置都是需要进行功能设置,如Usage plans
9
API CACHE的相关属性设定如下
Cache available:Flush entires cache
Enable api cache:可勾选
Cache capacity:0.5g
Encrypted cache Data:可勾选
Cache Time-to-Live:可设置时间
Required authorization:需要鉴权
10
- 基于审计的目的我们获取访问API GATEWAY 的log只能通过access log的方式
- Cloud-trail:监控的AWS原生的API,不是这些通过API GATEWAY 生成的API;
- Cloud-watch:监控的AWS API的请求信息,不包含谁访问的API以及如何访问的;