使用 Amazon API Gateway



AWS Lambda 函数可以通过HTTPS URL 调用。它可以通过 GET、POST、PUT 进行操作。当 HTTPS URL 被调用时,AWS Lambda 函数也可以被触发,并且通过get/post传递给 HTTPS 的数据可以在 AWS Lambda 内部使用,用于插入 DynamoDB 或发送邮件等。

本章详细讨论了使用 AWS lambda 和 API Gateway 工作中涉及的各种流程。

涉及的流程

以下是在使用 AWS lambda 和 API Gateway 时涉及的流程:

  • 创建用于权限的 IAM 角色
  • 创建 AWS lambda 函数
  • 创建 API Gateway
  • 将 lambda 函数链接到 api gateway
  • 将数据传递到 api gateway

下面给出了一个解释 API Gateway 和 AWS Lambda 工作原理的基本图表:

Processes Involved

这些流程将在本章中结合相关屏幕截图进行详细解释。

创建用于权限的 IAM 角色

从如下所示的 Amazon 服务中,选择 IAM 以创建 Lambda 函数将使用的角色。

Create Iam

转到 IAM,然后从左侧部分选择角色,如下所示:

Dashboard Menu

点击创建角色以创建 Lambda 函数。

Additional resources

选择 Lambda 并点击底部的权限。选择 API Gateway 和 Lambda 所需的权限。

Select Type

在搜索中搜索 API gateway,它将列出所有相关的权限。在这里,我们选择了对 API gateway 的完全访问权限,如下所示:

Attach Permission

现在,搜索 API gateway,它将列出所有相关的权限。在这里,我们选择了对 API gateway 的完全访问权限,如下所示:

Api Gateway

您也需要对策略重复相同的过程。

Policies

选择完必要的策略后,点击查看进入下一步。输入您选择的任意角色名称,如下所示:

Review

它显示了附加到角色的策略。点击创建角色,我们就完成了角色创建,可以继续进行 lambda 函数操作。

创建 AWS Lambda 函数

转到 AWS 服务并点击 lambda 服务以创建一个函数,用于将其与 api gateway 连接。

Compute

Lambda 函数的 UI 屏幕如下所示。点击创建函数按钮以继续创建 Lambda 函数。

UI Screen

输入函数名称并选择我们上面创建的现有角色。

Enter Name

它会显示一条消息,表明名为lambdawithapigateway的函数已成功创建。

Lambda Gateway

请注意,这里我们将使用nodejs运行时来编写代码。带有helloworld消息的 AWS 代码如下所示:

Environment

AWS Lambda 代码位于index.js文件中。名为 handler 的函数具有名为events、contextcallback的参数。

回调函数基本上包含错误和成功消息。请注意,这里我们没有任何与错误相关的代码,因此传递 null,成功消息为HelloWorld from lambda.

最后,保存添加的更改,然后继续将 Lambda 函数添加到 API gateway。

创建 API Gateway

登录您的 AWS 帐户并打开 API Gateway,如下所示:

Content Delivery

点击 API Gateway,它将引导您进入可以创建新 API Gateway 的屏幕。

Amazon Gateway

点击创建 API并添加如下所示的详细信息:

Create New

点击屏幕右侧的创建 API按钮。这将在屏幕左侧显示新创建的 API。

Create New Api

点击操作下拉菜单以创建 API 的新资源。

Action Dropdown

现在,创建一个新的资源,如下所示:

Resource Group

输入资源名称,如下所示。您将在最后创建的 URL 中看到输入的资源名称。点击创建资源,您将在屏幕上看到它,如下所示:

Child Resource

Resource Service

向创建的资源添加GET/POST方法,如下所示。从操作下拉菜单中选择方法。

Get Method

点击GET方法将该方法添加到 API。

Api Method

下一步是集成,它将将其与 Lambda 函数集成。现在,将 Lambda 函数添加到其中,如下所示:

Get Setup

将 Lambda 函数链接到 API Gateway

选择之前创建的 lambda 函数。

hello Setup

保存更改,您将看到一个对话框,提示您授予权限,如下所示:

Add Permission

点击确定以授予权限。这是 API gateway HTTP 请求和 Lambda 函数之间的执行详细信息:

Method Execution

现在,让我们部署 API gateway 更改。为此,我们需要从操作下拉菜单中选择部署 API,如下所示:

Deploy Api

选择部署 API。它将询问部署状态。从部署阶段下拉菜单中选择新阶段,并将阶段名称添加为生产

Select Deploy

点击部署按钮,它将重定向到如下所示的 URL:

Click Deploy

从左侧选择GET方法以获取 URL。在新选项卡中打开 URL 以查看来自 Lambda 函数的消息。

Select Get

这是一个使用 AWS Lambda 和 AWS API Gateway 的基本示例。在上面的示例中,我们在 Lambda 函数中硬编码了消息。

现在,让我们从 API Gateway 获取消息详细信息。如果 HTTPS 调用需要从不同的域调用,例如对 API 的 AJAX 调用,我们需要为创建的 API gateway 启用 CORS。

选择为 API 创建的 reSource 并点击操作下拉菜单:

Hello Method

现在,启用 CORS将打开以下屏幕:

Enable Cors

您可以使用几种方法来启用 CORS。Access-Control-Allow-Origin标记为 *,这意味着它将允许从任何域获取 API gateway 的内容。

您还可以指定要与 API 配合使用的域名。点击启用 CORS 并替换现有 CORS 标头按钮,它将显示如下所示的确认消息:

Conform Method

点击是,替换现有值按钮以启用它。启用 CORS屏幕如下所示:

Replace Existing Values

将数据传递到 API Gateway

打开在 API Gateway 中创建的 APIdisplayhelloworld,如下所示:

Passing Data

点击集成请求以发送数据,如下所示:

Integration Request

选择主体映射模板并为本示例添加Content-Typeapplication/json。点击添加的内容类型并添加如下详细信息:

Body Mapping

现在,以 JSON 格式添加模板,如下所示:

Json

请注意,我们已将消息作为参数,以从 API Gateway 获取数据并与 AWS Lambda 共享。获取详细信息的语法如上所示。

现在,部署 API 以使更改在 API Gateway URL 上可用。为此,我们需要更改 Lambda 函数以根据 API Gateway URL 显示数据。Lambda 函数的代码如下所示。请注意,我们正在从事件中获取消息并将其传递给回调。

exports.handler = (event, context, callback) => {
   let message = event.message;
   callback(null, message);
};

现在,保存 Lambda 中的更改并点击 URL 以查看更改。请注意以下屏幕截图:

Observe Screenshot

点击如下所示的 URL:

https://rw2ek1xung.execute-api.us-east-
1.amazonaws.com/prod/hello?message=hello%20from%20api%20gateway

请注意,这里我们将消息作为查询字符串传递给 GET URL。然后,您可以观察到如下所示的输出:

Passing Message

它读取从 URL 发送到消息的详细信息,并在浏览器中显示相同的内容。

广告