使用 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 傳送到訊息的詳細資訊,並在瀏覽器中顯示相同的內容。

廣告

© . All rights reserved.