當前位置: 妍妍網 > 碼農

實作無伺服器架構:AWS Lambda和API Gateway入門

2024-02-19碼農

實作無伺服器架構:AWS Lambda和API Gateway入門

無伺服器架構是當今雲端運算領域中的一個熱門話題,它允許開發者構建和執行應用程式而無需管理底層的伺服器。AWS Lambda和API Gateway是亞馬遜雲服務(AWS)提供的兩項核心服務,它們可以幫助開發者輕松實作無伺服器架構。在本文中,我將帶你了解如何使用AWS Lambda和API Gateway來搭建一個無伺服器套用。

AWS Lambda 簡介

AWS Lambda 是一個事件驅動的計算服務,它允許你執行程式碼而無需預先配置或管理伺服器。你只需要上傳你的程式碼,Lambda就會為你執行和擴充套件程式碼,使用的資源多少完全取決於程式碼執行的需要。Lambda可以在幾毫秒到幾分鐘內自動調整計算能力,以保持與請求率相匹配。

Lambda 函式的建立和部署

要建立一個Lambda函式,你可以在AWS管理控制台中選擇Lambda服務,然後點選「建立函式」。你可以選擇從頭開始編寫函式,或者使用AWS提供的藍圖和範例程式碼。Lambda支持多種程式語言,包括Node.js, Python, Ruby, Java, Go, .NET Core等。

部署Lambda函式的過程非常簡單:

  1. 1. 在AWS控制台中選擇Lambda服務。

  2. 2. 點選「建立函式」。

  3. 3. 選擇「從頭開始編寫」或「使用藍圖」。

  4. 4. 填寫函式的基本資訊,包括函式名、執行時選擇等。

  5. 5. 在線上編輯器中編輯你的程式碼或者上傳你的程式碼包。

  6. 6. 配置函式的觸發器,例如HTTP請求、S3事件等。

  7. 7. 設定執行角色,以授予Lambda函式存取AWS資源的許可權。

  8. 8. 點選「建立函式」完成部署。

Lambda 函式範例

下面是一個簡單的Lambda函式範例,它使用Node.js編寫,功能是返回一個簡單的「Hello World」響應:

exports.handler = async (event) => {
return {
statusCode: 200,
body: JSON.stringify('Hello World'),
};};

API Gateway 簡介

API Gateway是一個完全托管的服務,它使得開發者可以輕松建立、釋出、維護、監控和保護任何規模的API。與Lambda結合使用時,API Gateway可以作為Lambda函式的前端觸發器,接收HTTP請求並將其轉發給Lambda函式處理,然後返回響應。

建立和配置API Gateway

建立一個API Gateway非常直觀:

  1. 1. 在AWS控制台中選擇API Gateway服務。

  2. 2. 點選「建立API」。

  3. 3. 選擇API的型別,例如REST API或HTTP API。

  4. 4. 設定API的名稱和描述。

  5. 5. 定義資源和方法,資源對應你的API端點,方法對應HTTP方法,如GET、POST等。

  6. 6. 將方法配置為觸發Lambda函式或其他服務。

  7. 7. 部署API到一個新的或現有的階段。

API Gateway 範例

下面是如何建立一個簡單的API Gateway的步驟,它將GET請求轉發到我們上面建立的Lambda函式:

  1. 1. 在API Gateway控制台中,選擇「建立API」。

  2. 2. 選擇「REST API」。

  3. 3. 輸入API名稱,例如「HelloWorldAPI」。

  4. 4. 在資源下建立一個新的資源,例如「/hello」。

  5. 5. 為「/hello」資源建立一個GET方法。

  6. 6. 將GET方法的整合型別設定為「Lambda函式」。

  7. 7. 選擇之前建立的Lambda函式。

  8. 8. 部署API到一個新的階段,例如「prod」。

這樣,你就建立了一個公開的HTTP端點,當你存取這個端點時,API Gateway會觸發Lambda函式,並將函式的響應返回給客戶端。

整合Lambda和API Gateway

將Lambda和API Gateway結合起來,可以建立一個無伺服器的HTTP API。使用者的HTTP請求透過API Gateway路由到Lambda函式,函式處理請求後返回響應,整個過程無需伺服器。

架構圖解

為了更好地理解無伺服器架構,讓我們來看一個架構圖:

+------------+ +-------------+ +-------------+
| | | | | |
| Client +------->+ API Gateway+------->+ Lambda |
| | HTTP | | Invoke | |+------------+ +-------------+ +-------------+

在這個架構中:

  • • 客戶端發送一個HTTP請求到API Gateway。

  • • API Gateway接收請求,並根據配置將請求轉發給對應的Lambda函式。

  • • Lambda函式執行並返回結果給API Gateway。

  • • API Gateway將Lambda函式的響應返回給客戶端。

  • 效能最佳化和成本控制

    使用無伺服器架構,你可以根據實際使用量進行付費,這意味著如果沒有請求,就沒有成本。然而,為了控制成本並提高效能,你應該考慮以下因素:

  • • 冷啟動最佳化:雖然Lambda可以自動擴充套件,但是在啟動新例項時會有延遲,稱為「冷啟動」。為了減少冷啟動的影響,可以使用預熱機制或者增加函式的記憶體大小來提高啟動速度。

  • • 監控和日誌:AWS提供了CloudWatch服務來監控Lambda函式的執行和日誌。合理地配置日誌記錄可以幫助你偵錯問題並最佳化效能。

  • • 定價模型:理解Lambda和API Gateway的定價模型,根據請求量和執行時間來最佳化成本。

  • 結論

    無伺服器架構提供了一種高效、靈活且成本效益高的方式來執行應用程式。AWS Lambda和API Gateway是實作這一架構的強大工具。透過本文的介紹,你應該已經掌握了如何使用這兩項服務來搭建一個基本的無伺服器套用。

    如果喜歡我的內容,不妨點贊關註,我們下次再見!

    大家註意:因為微信最近又改了推播機制,經常有小夥伴說錯過了之前被刪的文章,或者一些限時福利,錯過了就是錯過了。所以建議大家加個 星標 ,就能第一時間收到推播。

    點個喜歡支持我吧,點個 在看 就更好了