天天看點

如何使用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)

繼續閱讀