零基础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云开发/云架构方案。 

  • 20
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值