Amazon API Gateway:轻松实现API管理 | 云原生日报

作者:API传播员 · 2025-11-12 · 阅读时间:6分钟
Amazon API Gateway 是一种完全托管的服务,帮助开发者轻松创建、发布和维护安全API,解决可扩展性、安全性和集成挑战。通过实际应用场景如航空公司预订系统和示例代码,展示如何与Lambda函数集成构建REST API,并实现文件上传到S3存储桶,简化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 的步骤:

  1. 登录 AWS 控制台:进入 API Gateway 服务,创建一个新 API,并命名为 my-API
  2. 创建资源:在仪表板中点击“创建资源”,命名为 myresources
  3. 创建方法:选择新创建的资源,点击“创建方法”,选择 HTTP 方法 GET
  4. 配置 Lambda 函数:选择 Lambda 函数 作为集成类型,并选择部署 Lambda 函数的区域。确保事先创建好 Lambda 函数,例如命名为 lambda-API
  5. 部署 API:通过选择“操作” > “部署 API”,将 API 部署到一个阶段,例如 dev
  6. 调用 URL:部署完成后,API 的调用 URL 将如下所示:

    https://h79a0kkuvd.execute-api.ap-south-1.amazonaws.com/dev/myresource
    • h79a0kkuvd 是 API 网关实例的唯一标识符。
    • /dev 是 API 的部署阶段。
    • /myresource 是定义的资源路径。

通过访问上述 URL,您可以从 Lambda 函数中获取响应。


示例 2:REST API 与 HTTP 集成

在此示例中,我们将创建一个 REST API,并通过 HTTP 与演示宠物商店端点集成:

  1. 创建或导入示例 API:可以通过 Swagger 或 Open API 规范文件导入,也可以直接从 URL 导入。在本例中,我们使用示例 API。
  2. 部署 API:选择资源中的“操作”,点击“部署 API”,设置阶段名称(如 dev),完成部署。
  3. 调用 URL:部署完成后,调用 URL 如下:

    https://pklozmrs37.execute-api.us-west-1.amazonaws.com/dev

    通过访问上述 URL,可以测试不同的资源路径和方法。例如:

    • GET https://pklozmrs37.execute-api.us-west-1.amazonaws.com/dev/pets
    • GET https://pklozmrs37.execute-api.us-west-1.amazonaws.com/dev/pets/1

此方法将请求转发到处理 pets 资源的后端 HTTP 服务器。


使用 API Gateway 上传文件到 S3 的示例

以下是通过 API Gateway 和 Lambda 函数将文件上传到 S3 存储桶的步骤:

  1. 创建 Lambda 函数:使用默认角色和代码创建一个 Lambda 函数(例如命名为 lambdaupload)。确保角色具有 S3 的 GetObjectPutObject 权限。

  2. 创建 REST API:在 API Gateway 中创建一个名为 uploadAPI 的 REST API。

  3. 配置资源和方法

    • 创建资源(例如 上传文件)。
    • 创建方法(例如 POST),选择集成类型为 Lambda(非代理集成)。
  4. 定义映射模板:在集成请求中添加映射模板,内容类型为 application/pdf,以支持 PDF 文件上传。

  5. 设置二进制媒体类型:在部署前,设置 PDF 的二进制媒体类型。

  6. 编写 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!")}
  7. 测试 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