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

零基础5分钟上手亚马逊云科技-利用API网关管理API

简介

欢迎来到小李哥全新亚马逊云科技AWS云计算知识学习系列,适用于任何无云计算或者亚马逊云科技技术背景的开发者,通过这篇文章大家零基础5分钟就能完全学会亚马逊云科技一个经典的服务开发架构方案。

我会每天介绍一个基于亚马逊云科技AWS云计算平台的全球前沿云开发/架构技术解决方案,帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS最佳实践,并应用到自己的日常工作里。本次介绍的是如何利用亚马逊云科技上云原生API网关,管理云端应用的Restful API,并通过API调用触发后端Lambda中的服务代码,提升云上应用程序的扩展性、安全性,降低运维维护难度。本方案架构图如下:

方案所需基础知识

什么是亚马逊云科技API网关服务?

亚马逊云科技API网关(Amazon API Gateway) 是一种完全托管的云原生服务,允许开发者轻松创建、发布、维护、监控和保护API。它可以帮助开发者将后端服务(如AWS Lambda、Amazon EC2等)与客户端(如网页、移动应用)进行安全、可靠的连接。

为什么用亚马逊云科技API网关管理API?

简化API管理与开发

Amazon API Gateway 使开发者能够快速创建RESTful API和WebSocket API,无需担心底层的基础设施管理。它可以帮助开发者自动处理API的流量、扩容、并发请求和缓存配置,从而帮助开发者专注于核心业务开发。

内置的安全性和性能优化

API Gateway 提供了内置的身份验证、访问控制(如IAM角色、Cognito等),并与AWS WAF集成进行安全防护。此外,它支持流量管理、自动缓存和跨区域部署,确保API调用的高性能和高可用性。

成本优化和控制

API Gateway 采用基于请求数量的定价模型,开发者只需为实际使用的API调用付费。这种按需付费的方式使得成本更加可控,尤其适合流量不稳定或增长中的应用,不需要预付或长期绑定服务器资源。

本方案包括的内容

1. 在亚马逊云科技上创建一个API网关

2.在API网关部署API

3.通过API网关上的API出发后端的应用服务

项目搭建具体步骤

1. 首先通过亚马逊云科技控制台进入Lambda无服务器计算服务

2. 在左侧功能栏点击Functions,再点击”Create Function“创建一个计算资源

3. 选择”Author from scratch“自己上传应用代码,为Function命名为”labFunction“,选择语言版本为”Python 3.10“

4. 为创建的Lambda函数添加IAM角色,最后点击Create创建

5. 我们在创建好的Lambda中复制如下代码,用于一个简单API调用查询车辆信息

import json
import logging# AWS Lambda Function Logging in Python - https://docs.aws.amazon.com/lambda/latest/dg/python-logging.html
logger = logging.getLogger()
logger.setLevel(logging.INFO)def lambda_handler(event, context):'''Demonstrates Amazon API Gateway Lambda proxy integration. You have fullaccess to the request and response payload, including headers andstatus code.https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html'''logger.debug(event) # Mind logger.setLevel at line 6. Check Event printed at CloudWatch#/vehicles/{vehicleId}vehicles = [{ "id": "1", "type": "bike", "available":"true"},{ "id": "2", "type": "car", "available":"false"},{ "id": "3", "type": "truck", "available": "true"}]# Input Format https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-formatresource = event['resource']# Uncomment to print the event# print("Received event: " + json.dumps(event, indent=2))err = None# /vehicles List all vehiclesresponse_body = {}if (resource == "/vehicles"):response_body = {"vehicles": vehicles}# /vehicles/vehicleId find vehicle by Id    elif (resource == "/vehicles/{id}"):vehicleId = event['pathParameters']['id']value = next((item for item in vehicles if item["id"] == str(vehicleId)), False)if( value == False ):err = "vehicle not found"else:response_body = {"vehicle": value}response =  response_payload(err, response_body)return response'''
In Lambda proxy integration, API Gateway sends the entire request as input to a backend Lambda function. 
API Gateway then transforms the Lambda function output to a frontend HTTP response.
Output Format: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-output-format
'''
def response_payload(err, res=None):return {'statusCode': '400' if err else '200','body': err if err else json.dumps(res),'headers': {'Content-Type': 'application/json',},}

 6. 点击Deploy对应用进行部署

7. 我们也可以选择点击”Test“对该应用进行测试,查看是否能返回正确的响应

8. 在单元测试配置中,我们选择亚马逊云科技提供的默认模板”apigateway-aws-proxy“

9. 我们再通过控制台进入API Gateway服务

10. 我们选择API网关类型为"REST API",点击Build创建

11. 我们选择”New API“方式创建一个新API,为API命名为”ApiLab“,API节点类型为”Regional“区域型,将API部署到一个单独区域内。

12. 点击Create Resources开始为网关添加API

13. 我们为该API配置路径名”pets“

14.接下来我们点击”Create Method“,为该该路径下的API添加方法

15. 首先我们为该API添加”GET“方法,并配置后端集成的服务为Lambda,并开启”Lambda proxy integration“,将整个HTTP Restful请求内容发送到后端。

16. 在Lambda Function选项中添加我们之前创建好的’LabFunction”函数,并点击"Create"创建

17. 接下来我们选中路径/pets,再该路径下添加一个新的子路径

18. 我们添加子路径”{id}“,双括号表示该API参数会被API网关传递到后端服务中处理,并点击Create创建

19. 我们为”{id}“路径添加方法和后端集成代码应用。

20. 我们添加Get方法,并挂载我们在前面创建的LabFunction函数应用。

 21. 创建完毕后,我们点击”Deploy API“将该API配置发布

22. 我们为新发布的版本命名为”lab“,点击Deploy发布

23. 发布成功后我们可以在该API版本页面查看API调用URL

 24. 我们将该URL复制到浏览器中,并在URL后面加上路径”/pets“,点击回车访问

25. 我们可以看到我们成功通过API网关,调用了后端的LabFunction中定义的函数应用,返回了代码中/pets路径定义的响应内容。

以上就是在亚马逊云科技上利用云原生API网关服务,管理云应用的API触发后端应用的全部步骤。欢迎大家关注0基础5分钟上手AWS系列,未来获取更多国际前沿的AWS云开发/云架构方案。 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • webpack 配置
  • MySQL_简介及安装、配置、卸载(超详细)
  • 【SpringBoot】调度和执行定时任务--Quartz(超详细)
  • 《网络协议 - HTTP传输协议及状态码解析》
  • mis_table.cs 与 csharp_mis_table.h
  • 用shell脚本,批量备份MySQL中所有数据库,并批量还原
  • 常用的运维工具:文件传输工具详解(SCP, SFTP)
  • GitLab CI_CD 从入门到实战笔记
  • 预训练发展
  • Python 中错误 CSV.Error: Line Contains Null Byte
  • Flink+Spark相关记录
  • RepLKNet架构详解
  • Tensorflow 兼容性测试-opencloudos
  • java中init()函数(JAVA基础)
  • Node.js的学习2——内置模块(一)
  • Django 博客开发教程 8 - 博客文章详情页
  • JavaScript类型识别
  • java小心机(3)| 浅析finalize()
  • JS+CSS实现数字滚动
  • JS学习笔记——闭包
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • nodejs:开发并发布一个nodejs包
  • php面试题 汇集2
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • 从0到1:PostCSS 插件开发最佳实践
  • 大主子表关联的性能优化方法
  • 反思总结然后整装待发
  • 为什么要用IPython/Jupyter?
  • 在electron中实现跨域请求,无需更改服务器端设置
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • ​TypeScript都不会用,也敢说会前端?
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • # windows 安装 mysql 显示 no packages found 解决方法
  • #stm32驱动外设模块总结w5500模块
  • #职场发展#其他
  • (1)Android开发优化---------UI优化
  • (23)Linux的软硬连接
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (八)光盘的挂载与解挂、挂载CentOS镜像、rpm安装软件详细学习笔记
  • (差分)胡桃爱原石
  • (二)Eureka服务搭建,服务注册,服务发现
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (三十五)大数据实战——Superset可视化平台搭建
  • (一)Docker基本介绍
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)jdk与jre的区别
  • (转)ORM
  • *** 2003
  • .gitignore文件使用
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET 直连SAP HANA数据库
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...