如何使用AWS API Gateway向用戶提供自定義API
在本教程中,我將向您介紹 API Gateway 并解釋使用這個有用工具的好處。然后我將向您展示如何創(chuàng)建和部署 Rest API,并創(chuàng)建使用計劃以提供 API 密鑰。好吧,讓我們開始吧。
(更|多優(yōu)質(zhì)內(nèi)|容:java567 點 c0m)
什么是 API 網(wǎng)關(guān)?
AWS API Gateway 是 Amazon Web Services (AWS) 提供的完全托管服務(wù),可簡化任何規(guī)模的 API 的創(chuàng)建、部署和管理。
它充當(dāng)應(yīng)用程序的前門,并允許您創(chuàng)建充當(dāng)客戶端和后端服務(wù)之間橋梁的 API。這可以實現(xiàn)安全、高效的通信。
為什么需要 API 網(wǎng)關(guān)?
AWS API Gateway 為企業(yè)和開發(fā)人員提供了許多好處。以下是使用 API Gateway 的一些好處。
可擴(kuò)展性和高可用性
借助 AWS API Gateway,擴(kuò)展 API 變得更加容易。它通過自動擴(kuò)展底層基礎(chǔ)設(shè)施來無縫處理流量峰值。這會帶來高可用性并有助于防止服務(wù)中斷。
安全與認(rèn)證
API網(wǎng)關(guān)提供強(qiáng)大的安全功能,包括內(nèi)置的身份驗證和授權(quán)機(jī)制。
它支持通過 IAM 角色對內(nèi)部應(yīng)用程序進(jìn)行用戶身份驗證,通過 Cognito 對外部應(yīng)用程序(例如移動用戶)進(jìn)行身份驗證,并且還支持自定義授權(quán)者。
與其他 AWS 服務(wù)集成
作為 AWS 生態(tài)系統(tǒng)的一部分,API Gateway 與一系列其他 AWS 服務(wù)無縫集成。這使您能夠利用 AWS Lambda 函數(shù)、用于用戶管理的 AWS Cognito 以及用于監(jiān)控和日志記錄的 AWS CloudWatch 等其他功能。
API生命周期管理
借助 API Gateway,您可以輕松對 API 的不同階段進(jìn)行版本控制、部署和管理。這簡化了推出更新、測試新功能以及管理不同環(huán)境(例如開發(fā)、登臺和生產(chǎn))的過程。
我希望現(xiàn)在您已經(jīng)了解 API Gateway 是什么以及它為何有價值。讓我們深入創(chuàng)建我們自己的 API 網(wǎng)關(guān)。
如何創(chuàng)建 AWS API 網(wǎng)關(guān)
在本節(jié)中,我們將:
使用 GET 方法創(chuàng)建 Rest API
將其與簡單的 hello world lambda 函數(shù)集成并部署
讓我們從創(chuàng)建 lambda 函數(shù)開始
如何創(chuàng)建 AWS Lambda 函數(shù)
登錄 AWS 管理控制臺并在 AWS 管理控制臺搜索欄中搜索“Lambda”。單擊創(chuàng)建函數(shù)。
導(dǎo)航到 AWS Lambda 控制臺
選擇“從頭開始創(chuàng)作”選項,輸入 lambda 函數(shù)的名稱,選擇“Python”運行時,然后單擊右下角的“創(chuàng)建函數(shù)”按鈕。
創(chuàng)建 AWS Lambda 函數(shù)
創(chuàng)建函數(shù)后,更新以下代碼并部署更改:
?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 函數(shù)
恭喜!您已成功創(chuàng)建 AWS Lambda 函數(shù)?,F(xiàn)在讓我們創(chuàng)建 Rest API。
如何創(chuàng)建 Rest API 并將其與 AWS Lambda 集成
在搜索欄中搜索API網(wǎng)關(guān)。在 REST API 部分中,單擊“構(gòu)建”按鈕。
創(chuàng)建休息 API
選擇“協(xié)議”為“Rest”,然后在“創(chuàng)建新 API”部分中選擇“新建 API”。在設(shè)置部分中輸入您選擇的 API 名稱,并將端點類型保留為默認(rèn)值。然后單擊創(chuàng)建 API 按鈕。
配置創(chuàng)建 Rest API
單擊左上角的操作按鈕。接下來,單擊方法并選擇方法作為 GET,然后單擊勾選圖標(biāo)。
創(chuàng)建一個方法
選擇“GET”方式
選擇 Lambda 函數(shù)作為集成類型,然后輸入您之前創(chuàng)建的 Lambda 函數(shù)的名稱。然后保存該函數(shù)。
選擇方法配置
單擊“保存”后,“向 Lambda 函數(shù)添加權(quán)限”將提示確認(rèn)。這基本上意味著您允許 API 網(wǎng)關(guān)調(diào)用 Lambda 函數(shù)。在本例中,它是“DemoFunction”Lambda 函數(shù)。接受確認(rèn)并繼續(xù)下一步。
允許從 API 網(wǎng)關(guān)調(diào)用 Lambda 函數(shù)的權(quán)限
單擊“測試”。它將帶您進(jìn)入一個新頁面。單擊“測試”按鈕。您將能夠在右側(cè)面板上看到 Lambda 函數(shù)的響應(yīng)。
我們的API架構(gòu)
測試我們的 API 網(wǎng)關(guān)
當(dāng)您成功測試 API 后,您就可以部署 API 了。要部署 API,請再次單擊“操作”按鈕,然后單擊“部署 API”。
部署API網(wǎng)關(guān)
將彈出“部署 API”對話框。選擇部署階段的新階段并將其命名為您想要的名稱。單擊部署按鈕。
配置API網(wǎng)關(guān)部署
單擊頂部顯示的“調(diào)用 URL”。您可以看到 Lambda 函數(shù)的響應(yīng)。
API網(wǎng)關(guān)已創(chuàng)建
測試我們的 API
偉大的!我們成功創(chuàng)建了 Rest API,將其與 Lambda 函數(shù)集成并部署。
但您可以通過市場上提供的多種服務(wù)來做到這一點。為什么選擇AWS API網(wǎng)關(guān)?
出色地。這是一個有趣的問題。首先,您可以配置API的使用計劃。最好的部分是您不必為其編寫任何代碼。
現(xiàn)在讓我們創(chuàng)建一個使用計劃,生成一個 API 密鑰,并僅通過在標(biāo)頭中傳遞 API 密鑰來訪問我們的 Rest API。
如何創(chuàng)建 API 網(wǎng)關(guān)使用計劃
在左側(cè)欄中,單擊“使用計劃”,然后單擊“創(chuàng)建”按鈕。輸入您的計劃名稱 - 我選擇“基本”。根據(jù)您的要求輸入“限制”和“配額”部分,然后單擊“下一步”。
創(chuàng)建 AWS API Gateway 使用計劃
單擊添加 API 階段按鈕。選擇 API 及其階段。單擊右上角的勾號圖標(biāo),然后選擇“下一步”。
為我們的 API 創(chuàng)建一個階段
為我們的 API 創(chuàng)建一個階段
單擊創(chuàng)建 API 密鑰并添加到使用計劃。將彈出一個模式。輸入 API 密鑰的名稱。對于 API 密鑰,我選擇了“自動生成”,但如果您想提供自定義密鑰,則可以輸入自定義密鑰。點擊保存按鈕。
創(chuàng)建 API 密鑰來訪問服務(wù)
配置API密鑰
從側(cè)邊欄中選擇“資源”,單擊剛剛創(chuàng)建的 GET API,然后單擊“方法請求”。
選擇方法
在“設(shè)置”部分中,將“需要 API 密鑰”字段更新為“true”,然后單擊“勾選”圖標(biāo)。更新后,不要忘記通過點擊“操作”下拉列表來部署更改。否則您的更改將不會更新。
啟用 API 密鑰 必填字段
部署API
現(xiàn)在點擊相同的 URL 即可看到神奇的效果。
禁止!
因為我們的API層現(xiàn)在受到保護(hù)了。您必須在標(biāo)頭中傳遞 API 密鑰才能訪問數(shù)據(jù)。
如果未提供 API Key,則禁止訪問
現(xiàn)在單擊側(cè)邊欄中的使用計劃。選擇您的計劃并導(dǎo)航到 API 密鑰選項卡。
訪問您的 API 密鑰
單擊您在步驟 3 中創(chuàng)建的 API 密鑰。單擊“顯示”。復(fù)制 API 密鑰。
API 密鑰列表
顯示您的 API 密鑰
您必須在“x-api-key”標(biāo)頭中傳遞 API 密鑰。讓我們切換到終端來測試一下。
首先驗證您的 Rest API,無需傳遞 API 密鑰。打開終端,然后輸入以下curl命令。您將再次看到禁止的消息。
?curl --location --request GET '[enter your invoke url]'
?--header 'Content-Type: application/json
終端中沒有 API 密鑰的禁止訪問
現(xiàn)在傳遞 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 標(biāo)頭中傳遞 API 密鑰時收到的數(shù)據(jù)
您可以看到 Lambda 函數(shù)的輸出,因為您在標(biāo)頭中傳遞了“x-api-key”。
驚人的!您已成功創(chuàng)建使用計劃,生成 API 密鑰,并將其附加到 Rest API 方法并驗證集成。
結(jié)論
在本教程中,您了解了 AWS API 網(wǎng)關(guān)是什么以及如何為 Rest API 創(chuàng)建使用計劃。