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

零基础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 full
    access to the request and response payload, including headers and
    status 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-format
    resource = event['resource']
    # Uncomment to print the event
    # print("Received event: " + json.dumps(event, indent=2))

    err = None
    # /vehicles List all vehicles
    response_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云开发/云架构方案。 


http://www.kler.cn/a/301940.html

相关文章:

  • Springboot 使用EasyExcel导出含图片并设置样式的Excel文件
  • android webview常见内容
  • JS 数组排序
  • uniapp ios app以framwork形式接入sentry
  • 0x00基础算法 -- 0x05 排序
  • 《FreeRTOS任务控制块篇》
  • 移植案例与原理 - XTS子系统之应用兼容性测试用例开发
  • 在Ubuntu 20.04上安装pgAdmin 4
  • 【Linux】探索进程优先级的奥秘,解锁进程的调度与切换
  • ICM20948 DMP代码详解(17)
  • Mysql查看锁阻塞信息
  • 机器学习实战21-基于XGBoost算法实现糖尿病数据集的分类预测模型及应用
  • 用钱能解决的事儿真不叫事儿!
  • SQL Server数据库简单的事务日志备份恢复
  • arcgis Feature Server的新增、更新、删除
  • 从边缘到云端,合宙DTURTU打造无缝物联网解决方案
  • AI学习指南深度学习篇-Adam在深度学习中的应用
  • Linux和C语言(Day07)
  • uniapp实现下拉刷新
  • 什么是数据库回表,又该如何避免
  • 简单比较 http https http2,我们要如何把http升级为https
  • UML-统一建模语言学习笔记20240912
  • 性能测试-跨线程组使用变量(十四)
  • 【网络安全】对称密码体制
  • Android 10.0 mtk平板camera2横屏预览旋转90度横屏拍照图片旋转90度功能实现
  • Git常用指令大全详解