Amazon API Gateway:轻松实现API管理 | 云原生日报
文章目录
API网关的基础知识
在当今的数字化时代,Amazon API Gateway 是目前最受欢迎的API网关之一,它是一种完全托管的服务,开发者可以轻松创建、发布和维护任何规模的安全API。
随着电子商务、移动应用和其他数字服务的快速发展,对API的需求呈现指数级增长。API使企业能够无缝地向其他企业、开发者和最终用户提供服务。然而,管理API可能会面临可扩展性、安全性和集成的挑战。
Amazon API Gateway 提供了一个完全托管、可扩展且安全的网关,简化了API管理的复杂性。通过该服务,开发者可以专注于API的构建和交付,而无需担心底层基础设施的管理和扩展。
Amazon API Gateway 的实际应用场景
航空公司预订系统的案例
假设一家航空公司希望通过第三方供应商(如 yatra.com、go-ibibo.com、makemytrip.com 等)为客户提供航班预订服务。这些供应商需要访问航空公司的预订系统,而航空公司则需要确保其系统的安全性、可扩展性和易管理性。
传统方法通常需要航空公司开发和维护与预订系统集成的自定义API。这种方式不仅复杂且耗时,还需要额外的基础设施管理成本。而 Amazon API Gateway 则可以通过其强大的功能和灵活性,帮助企业快速构建和管理API,从而实现高效的服务交付。
使用 Amazon API Gateway 构建 REST API 的示例
示例 1:REST API 与 Lambda 函数集成
以下是通过 Amazon API Gateway 创建一个与 Lambda 函数集成的 REST API 的步骤:
- 登录 AWS 控制台:进入 API Gateway 服务,创建一个新 API,并命名为
my-API。 - 创建资源:在仪表板中点击“创建资源”,命名为
myresources。 - 创建方法:选择新创建的资源,点击“创建方法”,选择 HTTP 方法
GET。 - 配置 Lambda 函数:选择
Lambda 函数作为集成类型,并选择部署 Lambda 函数的区域。确保事先创建好 Lambda 函数,例如命名为lambda-API。 - 部署 API:通过选择“操作” > “部署 API”,将 API 部署到一个阶段,例如
dev。 -
调用 URL:部署完成后,API 的调用 URL 将如下所示:
https://h79a0kkuvd.execute-api.ap-south-1.amazonaws.com/dev/myresourceh79a0kkuvd是 API 网关实例的唯一标识符。/dev是 API 的部署阶段。/myresource是定义的资源路径。
通过访问上述 URL,您可以从 Lambda 函数中获取响应。
示例 2:REST API 与 HTTP 集成
在此示例中,我们将创建一个 REST API,并通过 HTTP 与演示宠物商店端点集成:
- 创建或导入示例 API:可以通过 Swagger 或 Open API 规范文件导入,也可以直接从 URL 导入。在本例中,我们使用示例 API。
- 部署 API:选择资源中的“操作”,点击“部署 API”,设置阶段名称(如
dev),完成部署。 -
调用 URL:部署完成后,调用 URL 如下:
https://pklozmrs37.execute-api.us-west-1.amazonaws.com/dev通过访问上述 URL,可以测试不同的资源路径和方法。例如:
GET https://pklozmrs37.execute-api.us-west-1.amazonaws.com/dev/petsGET https://pklozmrs37.execute-api.us-west-1.amazonaws.com/dev/pets/1
此方法将请求转发到处理 pets 资源的后端 HTTP 服务器。
使用 API Gateway 上传文件到 S3 的示例
以下是通过 API Gateway 和 Lambda 函数将文件上传到 S3 存储桶的步骤:
-
创建 Lambda 函数:使用默认角色和代码创建一个 Lambda 函数(例如命名为
lambdaupload)。确保角色具有 S3 的GetObject和PutObject权限。 -
创建 REST API:在 API Gateway 中创建一个名为
uploadAPI的 REST API。 -
配置资源和方法:
- 创建资源(例如
上传文件)。 - 创建方法(例如
POST),选择集成类型为Lambda(非代理集成)。
- 创建资源(例如
-
定义映射模板:在集成请求中添加映射模板,内容类型为
application/pdf,以支持 PDF 文件上传。 -
设置二进制媒体类型:在部署前,设置 PDF 的二进制媒体类型。
-
编写 Lambda 函数代码:
import json import base64 import boto3 import os s3 = boto3.client("s3") bucket_name = os.environ["S3_BUCKET_NAME"] def lambda_handler(event, context): file_content = event["body-json"] file_name = event.get("file_name", "default.pdf") folder_name = "PDFcontainer/" file_key = folder_name + file_name decoded_content = base64.b64decode(file_content) s3.put_object(Bucket=bucket_name, Key=file_key, Body=decoded_content) return {"statusCode": 200, "body": json.dumps("Thanks! File is uploaded!")} -
测试 API 端点:使用 Postman 测试 API 调用,确保文件成功上传到 S3 存储桶。
总结
Amazon API Gateway 是一个强大的工具,能够帮助企业轻松管理和扩展 API。无论是与 Lambda 函数集成,还是通过 HTTP 连接后端服务,API Gateway 都能显著简化开发流程。通过本文的示例,您可以快速上手并体验其强大的功能,为企业构建高效的 API 管理解决方案。
原文链接: https://medium.com/cloud-native-daily/amazon-api-gateway-effortless-api-management-2bfa6e50f5ac
最新文章
- 增强API安全性:使用OPA和Kong Gateway进行细粒度访问控制
- 如何免费调用有道翻译API实现多语言翻译
- 公司logo获取服务:如何让企业自动化生成Logo变得轻松简单?
- 了解和使用REST API
- 为什么API开发对现代应用至关重要?
- 如何利用Apache APISIX实现高效的API认证与鉴权:全面解析主流认证方式
- 医疗保健领域中api解决方案的优势与劣势
- 如何获取腾讯AI开放平台 API Key 密钥(分步指南)
- 如何使用Flask-RESTX构建和文档化RESTful API
- API类型:详解与图示 – Kodezi博客
- 百度文心一言API使用指南:非技术人员入门教程
- 如何获取腾讯AI开放平台 API Key 密钥(分步指南)