天天看点

如何使用AWS API Gateway向用户提供自定义API

作者:晓枫Motivation

在云计算和无服务器架构领域,AWS API Gateway 是一款功能强大的工具,可帮助您构建强大、安全且可扩展的 API。

在本教程中,我将向您介绍 API Gateway 并解释使用这个有用工具的好处。然后我将向您展示如何创建和部署 Rest API,并创建使用计划以提供 API 密钥。好吧,让我们开始吧。

(更|多优质内|容:java567 点 c0m)

什么是 API 网关?

AWS API Gateway 是 Amazon Web Services (AWS) 提供的完全托管服务,可简化任何规模的 API 的创建、部署和管理。

它充当应用程序的前门,并允许您创建充当客户端和后端服务之间桥梁的 API。这可以实现安全、高效的通信。

为什么需要 API 网关?

AWS API Gateway 为企业和开发人员提供了许多好处。以下是使用 API Gateway 的一些好处。

可扩展性和高可用性

借助 AWS API Gateway,扩展 API 变得更加容易。它通过自动扩展底层基础设施来无缝处理流量峰值。这会带来高可用性并有助于防止服务中断。

安全与认证

API网关提供强大的安全功能,包括内置的身份验证和授权机制。

它支持通过 IAM 角色对内部应用程序进行用户身份验证,通过 Cognito 对外部应用程序(例如移动用户)进行身份验证,并且还支持自定义授权者。

与其他 AWS 服务集成

作为 AWS 生态系统的一部分,API Gateway 与一系列其他 AWS 服务无缝集成。这使您能够利用 AWS Lambda 函数、用于用户管理的 AWS Cognito 以及用于监控和日志记录的 AWS CloudWatch 等其他功能。

API生命周期管理

借助 API Gateway,您可以轻松对 API 的不同阶段进行版本控制、部署和管理。这简化了推出更新、测试新功能以及管理不同环境(例如开发、登台和生产)的过程。

我希望现在您已经了解 API Gateway 是什么以及它为何有价值。让我们深入创建我们自己的 API 网关。

如何创建 AWS API 网关

在本节中,我们将:

  • 使用 GET 方法创建 Rest API
  • 将其与简单的 hello world lambda 函数集成并部署

让我们从创建 lambda 函数开始

如何创建 AWS Lambda 函数

登录 AWS 管理控制台并在 AWS 管理控制台搜索栏中搜索“Lambda”。单击创建函数。

导航到 AWS Lambda 控制台

选择“从头开始创作”选项,输入 lambda 函数的名称,选择“Python”运行时,然后单击右下角的“创建函数”按钮。

创建 AWS Lambda 函数

创建函数后,更新以下代码并部署更改:

import json
 
 def lambda_handler(event, context):
     body = "Hello from 5minslearn!"
     statusCode = 200
     return {
         "statusCode": statusCode,
         "body": json.dumps(body),
         "headers": {
             "Content-Type": "application/json"
         }
     }           

部署 Lambda 函数

恭喜!您已成功创建 AWS Lambda 函数。现在让我们创建 Rest API。

如何创建 Rest API 并将其与 AWS Lambda 集成

在搜索栏中搜索API网关。在 REST API 部分中,单击“构建”按钮。

创建休息 API

选择“协议”为“Rest”,然后在“创建新 API”部分中选择“新建 API”。在设置部分中输入您选择的 API 名称,并将端点类型保留为默认值。然后单击创建 API 按钮。

配置创建 Rest API

单击左上角的操作按钮。接下来,单击方法并选择方法作为 GET,然后单击勾选图标。

创建一个方法

选择“GET”方式

选择 Lambda 函数作为集成类型,然后输入您之前创建的 Lambda 函数的名称。然后保存该函数。

选择方法配置

单击“保存”后,“向 Lambda 函数添加权限”将提示确认。这基本上意味着您允许 API 网关调用 Lambda 函数。在本例中,它是“DemoFunction”Lambda 函数。接受确认并继续下一步。

允许从 API 网关调用 Lambda 函数的权限

单击“测试”。它将带您进入一个新页面。单击“测试”按钮。您将能够在右侧面板上看到 Lambda 函数的响应。

我们的API架构

测试我们的 API 网关

当您成功测试 API 后,您就可以部署 API 了。要部署 API,请再次单击“操作”按钮,然后单击“部署 API”。

部署API网关

将弹出“部署 API”对话框。选择部署阶段的新阶段并将其命名为您想要的名称。单击部署按钮。

配置API网关部署

单击顶部显示的“调用 URL”。您可以看到 Lambda 函数的响应。

API网关已创建

测试我们的 API

伟大的!我们成功创建了 Rest API,将其与 Lambda 函数集成并部署。

但您可以通过市场上提供的多种服务来做到这一点。为什么选择AWS API网关?

出色地。这是一个有趣的问题。首先,您可以配置API的使用计划。最好的部分是您不必为其编写任何代码。

现在让我们创建一个使用计划,生成一个 API 密钥,并仅通过在标头中传递 API 密钥来访问我们的 Rest API。

如何创建 API 网关使用计划

在左侧栏中,单击“使用计划”,然后单击“创建”按钮。输入您的计划名称 - 我选择“基本”。根据您的要求输入“限制”和“配额”部分,然后单击“下一步”。

创建 AWS API Gateway 使用计划

单击添加 API 阶段按钮。选择 API 及其阶段。单击右上角的勾号图标,然后选择“下一步”。

为我们的 API 创建一个阶段

为我们的 API 创建一个阶段

单击创建 API 密钥并添加到使用计划。将弹出一个模式。输入 API 密钥的名称。对于 API 密钥,我选择了“自动生成”,但如果您想提供自定义密钥,则可以输入自定义密钥。点击保存按钮。

创建 API 密钥来访问服务

配置API密钥

从侧边栏中选择“资源”,单击刚刚创建的 GET API,然后单击“方法请求”。

选择方法

在“设置”部分中,将“需要 API 密钥”字段更新为“true”,然后单击“勾选”图标。更新后,不要忘记通过点击“操作”下拉列表来部署更改。否则您的更改将不会更新。

启用 API 密钥 必填字段

部署API

现在点击相同的 URL 即可看到神奇的效果。

禁止!

因为我们的API层现在受到保护了。您必须在标头中传递 API 密钥才能访问数据。

如果未提供 API Key,则禁止访问

现在单击侧边栏中的使用计划。选择您的计划并导航到 API 密钥选项卡。

访问您的 API 密钥

单击您在步骤 3 中创建的 API 密钥。单击“显示”。复制 API 密钥。

API 密钥列表

显示您的 API 密钥

您必须在“x-api-key”标头中传递 API 密钥。让我们切换到终端来测试一下。

首先验证您的 Rest API,无需传递 API 密钥。打开终端,然后输入以下curl命令。您将再次看到禁止的消息。

curl --location --request GET '[enter your invoke url]'
 --header 'Content-Type: application/json           

终端中没有 API 密钥的禁止访问

现在传递 API 密钥。运行以下curl命令:

curl --location --request GET '[your invoke url]' \
 --header 'x-api-key: [your api key]' \
 --header 'Content-Type: application/json' \
 --data-raw ''           

在 x-api-key 标头中传递 API 密钥时收到的数据

您可以看到 Lambda 函数的输出,因为您在标头中传递了“x-api-key”。

惊人的!您已成功创建使用计划,生成 API 密钥,并将其附加到 Rest API 方法并验证集成。

结论

在本教程中,您了解了 AWS API 网关是什么以及如何为 Rest API 创建使用计划。

(更|多优质内|容:java567 点 c0m)

继续阅读