首页 > 其他分享 >零基础5分钟上手亚马逊云科技-利用API网关管理API

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

时间:2024-09-12 23:50:41浏览次数:3  
标签:网关 vehicles 亚马逊 API response Lambda

简介

欢迎来到小李哥全新亚马逊云科技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"创建

 

 

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

标签:网关,vehicles,亚马逊,API,response,Lambda
From: https://blog.csdn.net/m0_66628975/article/details/142187653

相关文章

  • AES加密解密全流程演示__api基础使用
    publicstaticvoidmain(String[]args)throwsException{//共同约定秘钥和加密算法Stringcontent="你好,世界";//AES密钥长度通常为128、192或256位Stringkey="1234567812345678";//16字节*8Stringalgorithm="AE......
  • Vue 3 Composition API进阶指南
    在上一篇文章中,我们介绍了Vue3的CompositionAPI基础,包括如何使用setup函数、ref和reactive来创建响应式数据,以及使用watchEffect来监控数据变化。本文将继续深入探讨CompositionAPI的高级用法,帮助你更好地理解和利用Vue3的新特性。组合多个Hooks在实际开发中,我们经常需要......
  • 某智能网关 list_service_manage存在命令执行漏洞
    漏洞描述瑞斯康达多业务智能网关list_service_manage.php存在未授权命令注入漏洞,攻击者利用可获取服务器权限。资产信息FOFA:body="/images/raisecom/back.gif"漏洞复现pocPOST/vpn/list_service_manage.php?template=%60whoami%3E%2Fwww%2Ftmp%2F1.txt%60HTTP/1.1H......
  • 面试-JS Web API-JSONP和cors
    JSONP(JSONwithPadding)JSONP是通过<script>标签来实现跨域数据传输的技术。它是为了绕过浏览器的同源策略限制而诞生的。访问一个网址,服务端一定返回一个html文件吗?---不是的服务器可以任意动态拼接数据返回的,只要符合html格式的要求就可以。JSONP的工作原理:客......
  • 微服务引擎 MSE 及云原生 API 网关 2024 年 8 月产品动态
    ......
  • 面试-JS Web API
    手写一个简易的Ajax跨域的常用实现方式GET请求//创建一个XMLHttpRequest对象constxhr=newXMLHttpRequest();//初始化一个GET请求//第三个参数true表示异步,一般都为truexhr.open('GET','/data/test.json',true);//设置事件处理函数,当readyState......
  • 安全合规、资源专属!即构科技联合亚马逊云科技推出实时互动解决方案
    “不出海,就出局。”为了应对国内市场竞争压力、形成新的业务增长点,越来越多科技企业加快拓展海外市场的步伐。然而,在这一过程中,业务操作的安全可控和风险隔离成为科技企业出海的“绊脚石”。如何满足跨境传输、数据储存和隐私保护等要求,搭建稳定合规的底层架构? 即构科技借助亚......
  • 获取天猫商品评论API数据:商品质量、服务态度等多维度评价分析
    天猫作为中国主要的电商平台之一,提供了丰富的API接口供开发者使用,以便能够获取商品信息、订单数据、物流信息等。然而,直接访问用户评论的详细数据(如商品质量、服务态度等多维度评价)的API可能受到隐私和商业机密的保护,并不直接对外开放给普通开发者或普通商家。尽管如此,有几种......
  • 大模型API的响应内容(markdown语法)在Html中显示
    大模型的API响应内容一般都是markdown语法的,示例如下:{"created":1703487403,"id":"8239375684858666781","model":"glm-4","request_id":"8239375684858666781","choices":[{......
  • 用 Rust 实现敏感信息拦截插件,提升 AI 网关安全防护能力
    作者:刘毅杰,棱镜七彩信息科技有限公司研发,HigressMember前言AI时代内容安全的重要性随着大模型技术的发展,企业越来越依赖这些模型来进行业务处理。然而,数据安全成为了不容忽视的问题。主要有两方面的隐患:AI生成内容的不可控性:LLM的回答可能产生涉黄、涉暴等内容,为业务和......