© Yu Chun Christopher Wong/Shutterstock.com

您是否厭倦了管理服務器和不斷擔心基礎架構?您是否希望自己可以專注於編寫代碼而讓其他人處理繁重的工作?讓我介紹一下 AWS Lambda。 Lambda 關於無服務器計算的聲明乍一看似乎好得令人難以置信。仔細想想,某處一定有服務器。如果您託管 Web 應用程序或網站,則後端始終有一台服務器保持運行。

由 Amazon Web Services 的嚮導開發,Lambda 讓您無需管理任何服務器即可運行代碼。沒錯,不再需要深夜服務器維護或驚慌失措的 IT 支持電話。

您實際上可以編寫和運行您的代碼以響應各種事件,例如 SQS 隊列中的新消息或 S3 存儲桶中的數據更改。同時,AWS 會自動擴展您的應用程序並運行您的代碼以響應這些事件,而無需任何人工干預。因此,您只需為使用的計算時間付費,而不是在閒置的服務器上浪費金錢。

因此,如果您不必管理服務器,也不必為閒置的服務器時間付費,有什麼收穫?是什麼讓 Lamdba 如此出色?在了解這項引人入勝的服務時,您有什麼應該注意的地方嗎?讓我們深入了解事實!

關於 AWS Lambda 的必知事實

AWS Lambda 是事件驅動的,這意味著它僅在事件觸發時運行,例如 Amazon S3 中的數據更改或Amazon Kinesis 流中的新消息。AWS Lambda 支持多種編程語言,包括 Node.js、Python、Java、Go 等。AWS Lambda 具有高度可擴展性,可自動並行運行函數的多個實例以處理流量增加.AWS Lambda 與各種其他 AWS 服務無縫集成,包括 Amazon S3、DynamoDB 和 Kinesis。AWS Lambda 具有基於請求數量和使用的計算時間量的定價模型。對於使用模式不頻繁或不可預測的應用程序,這可能具有成本效益。

什麼是 AWS Lambda:解釋

就在二十年前,互聯網對於您的典型業務來說還是一個截然不同的地方。如果您有想要向公眾提供的應用程序或 Web 服務,則需要設置自己的基礎架構,包括服務器、網絡設備,以及配置您自己的軟件的麻煩。維護所有這些硬件通常意味著僱傭一個昂貴的內部 IT 部門來管理它們。

Amazon 於 2006 年憑藉 EC2 或“彈性計算雲”登場。這在當時是一個革命性的想法。無需處理服務器維護和支付大量硬件費用,您只需從 AWS 訂購計算容量並在分配的時間內租用虛擬服務器。

雲服務在一夜之間流行起來,而這與舊方法相比,這是一種範式轉變,亞馬遜有辦法讓它變得更好。你看,使用 EC2,你仍然需要為分配給硬件的時間付費,因此它可能會變得昂貴,即使你沒有在服務器上主動執行任何代碼或操作。

進入 AWS Lambda

AWS Lambda 在 2014 年推出時,引入了按執行付費的模式。換句話說,您無需為物理硬件付費,只需為您希望運行代碼的次數付費。

使用 Lambda,您可以使用您選擇的語言(Python 、Java 或 Node.js)並將其上傳到服務。然後,您可以觸發代碼運行以響應各種事件,例如更新 DynamoDB 表、更改 Amazon S3 存儲桶中的數據或通過 Amazon API Gateway 發出 HTTP 請求。最好的部分?您不必擔心配置服務器、配置數據庫或處理管理基礎架構帶來的任何其他麻煩。

相反,Lambda 會自動擴展您的應用程序並運行您的代碼以響應事件,而無需任何需要人工干預。這意味著您只需為使用的雲計算時間付費,而不是為閒置的服務器付費。此外,AWS Lambda 支持與其他 AWS 服務集成,因此您可以輕鬆構建功能強大的事件驅動型應用程序。

那麼 Lambda 是如何工作的呢?是什麼讓一切正常運轉?好吧,繼續閱讀以準確了解這一點!

AWS Lambda 支持與其他 AWS 服務的集成。

©Gil C/Shutterstock.com

功能

這就是神奇之處! Lambda 函數是運行代碼以響應事件的強大動力。加上最好的部分?您可以使用多種編程語言編寫函數,包括 Node.js、Python、Java 和 Go 等流行語言。

函數基本上只是代碼塊。您可以擁有託管 REST API 的功能或執行夜間備份的功能。陽光下的一切。一般來說,它們是您的 Lambda 工作流程的支柱。

事件源

為了讓您的函數正常工作,您需要一些東西來觸發它。這正是事件源的含義:觸發您的函數的操作。 Lambda 支持廣泛的事件源,包括流行的 AWS 服務,如 Amazon S3、DynamoDB 和 Kinesis。這還不是全部——您還可以使用 SNS 和 SES 等服務來設置高度自動化的通信基礎設施。

事件源的一個例子是文本消息或電子郵件。您可以將 SNS 設置為在企業發送電子郵件時觸發向客戶發送短信。或者在收到短信後將數據添加到數據庫中。對於事件源,您真的可以發揮想像力。

縮放

由於自動縮放,與使用 EC2 等服務相比,Lambda 非常有吸引力。換句話說,Lambda 可以自動擴展以支持極高水平的吞吐量。與手動縮放計算資源相比,自動縮放試圖讓您更多地關注功能,而不是擔心縮放服務器的細節。

運行時環境

由於它是“無服務器”環境,因此您不必擔心安全性。過去,設置防火牆或配置安全系統會佔用大量時間,尤其是在 EC2 之前的日子裡。 Lambda 使用 Amazon 的內置安全機制使其變得更加簡單。

監控和日誌記錄

AWS Lambda 提供全面的監控和日誌記錄功能,包括指標、日誌和跟踪,這有助於您可以對功能進行故障排除和優化。

Lambda 的這些組件和功能為構建和運行應用程序提供了一個靈活而強大的平台。無論您是在開發小型微服務還是大型應用程序,AWS 都能為您提供強大而可靠的基礎設施。

如何使用 AWS Lambda

如果您想使用 Lambda,您需要按順序準備一些基本成分。首先,您需要一個 AWS 賬戶。好消息是 Lambda 可在免費套餐中使用,而且您每個月都能獲得相當豐厚的分配。

您需要具備 AWS 的基礎知識,因此學習 AWS Certified Cloud Practitioner 這樣的考試可能是一項不錯的投資。但是,您無需為知識付費。您通常可以在 YouTube 或其他在線資源上找到幫助,其中包含針對您的用例的教程。

您將要做的主要工作是創建函數和配置事件源。創建 Lambda 函數很簡單——只需前往 AWS 管理控制台或使用 AWS CLI。

開始使用 Lambda ,您需要具備 AWS 的基礎知識。

©Shalstock/Shutterstock.com

如何學習 AWS Lambda

如果您對 AWS 一無所知,研究像 Lambda 這樣的服務可能會令人生畏。但是,如果您想了解它並用它為您自己的應用程序構建一些東西,那麼好消息是它並不像看起來那麼令人困惑。如果您渴望學習 Lambda,可以使用大量資源來幫助您入門。以下是幫助您深入了解這項令人興奮的服務的一些提示:

從官方文檔開始

AWS 文檔看起來並不華而不實,可能有點乏味,但它確實,毫無疑問,這是您能找到的關於該主題的最真實的資源。但是,閱讀文檔來學習就像閱讀字典來學習語言一樣。這不是解決問題的正確方法。

相反,請將文檔與教程和您自己的項目結合起來。當您遇到無法解決的錯誤或障礙時,請查閱文檔。

利用在線教程和課程

已經存在大量提供付費和免費教程和課程的網站,特別是自從 Lambda 自 2014 年以來就已經存在。這些課程涵蓋各種主題,例如無服務器架構、事件驅動編程和無服務器部署,可以幫助您快速上手。

AWS Lambda:什麼時候它不是最佳選擇?

AWS Lambda 並不是無服務器計算遊戲中的唯一參與者。僅舉幾例,您有 Google App Engine、Azure Functions,甚至 Heroku。所有這些服務都提供了自己獨特的方法,但它們都有自己的缺點。對於需要更大靈活性和對其環境進行控制的應用程序,Docker 等容器化技術和 Kubernetes 等容器編排平台可能更合適。雖然這些選項比無服務器計算服務需要更多的設置和管理,但它們提供了更多的靈活性和對您的環境的控制。

雖然我們不會進入 AWS 與 Azure 或 AWS 與 Heroku 的戰鬥在這裡,我們可以想到一些 Lambda 可能不是最佳服務的好情況。答案通常是另一個 Amazon 服務。

如果您需要長時間運行的任務

對於 Lambda 來說,長時間運行或連續的代碼執行可能有點過於繁重。由於 Lambda 函數的最長運行時間為 15 分鐘,因此它們可能不是此類工作的最佳選擇。在這種情況下,Amazon EC2 或 AWS Batch 是更合適的替代方案。

如果您的應用程序有很高的內存要求

Lambda 函數的內存限制在 128 MB 到 10 GB 之間–對於內存要求過高的應用程序來說可能不夠用。 AWS Elastic Container Service,簡稱為 ECS,或 EC2 都是這些應用程序的更好選擇。

如果您的應用程序需要持久存儲

如果您需要持久存儲,或者更簡單地說也就是說,您需要您的應用程序在用戶註銷時記住一些事情,Lambda 函數不是最佳答案。它們在設計上是無狀態的,不提供持久存儲。如果您的應用程序必須擁有它,Amazon Elastic File System 和 Amazon Elastic Block Store 都可以提供持久存儲。

如果按請求成本不符合您的預算

AWS 會向您收費基於請求的數量和執行時間,對於高流量應用程序來說,這可以快速加起來。在某些情況下,在 EC2 上運行您自己的服務器或使用 ECS 可能更具成本效益。

如果您只是託管一個簡單的網站

Lambda 不是理想的選擇,如果你的需求很簡單。大多數普通的舊商業網站——那些沒有很多功能或龐大用戶群的網站——不會對像 Lambda 這樣的服務有任何用處。如果你有一個靜態網站或者你想啟動一個 WordPress 網站,你最好使用 Siteground、Bluehost 或 WPengine 等託管服務提供商。

SiteGround 對於擁有靜態網站或 WordPress 網站的用戶來說可能是更好的選擇。

©Postmodern Studio/Shutterstock.com

AWS Lambda:發布歷史

自 2014 年推出以來,Lambda 經歷了多次更新和改進,使其成為領先的無服務器計算服務。 2018 年值得注意的版本之一是對自定義運行時的支持,允許開發人員使用任何編程語言編寫 Lambda 函數。此功能極大地擴展了開發人員可用的選項,並使他們能夠使用自己喜歡的編程語言工作。

AWS 在 2019 年宣布了 Lambda Layers。這實際上是一個非常重大的更新,因為它最終允許開發人員共享代碼以及跨多個函數的依賴關係,節省了大量時間和資源。

過去幾年對 Lambda 來說簡直令人印象深刻。幾乎每週都會看到對新語言或事件源的持續更新支持。錯誤處理和異步調用等新功能聽起來像是流行語,但它們以更穩健、更高效的平台形式為服務添加了許多功能。

AWS Lambda:包含功能和優勢的完整指南和利弊常見問題解答(常見問題解答)

AWS Lambda 的用途是什麼?

簡單的事情,例如在線購物時放置商品購物車,或您希望事件觸發功能的任何地方。

AWS Lambda 的 3 個組件是什麼?

執行的功能或代碼任務、配置,它決定了你的函數如何執行的細節,最後是事件源,它觸發了你的函數。

什麼相當於 AWS Lambda?

Azure Functions 是一個極具競爭力的替代方案,具有非常相似的函數和触發系統。

哪種語言最適合 AWS Lambda?

Python 被廣泛認為是編寫 Lambda 函數以達到其速度的最佳語言。

我應該使用 AWS Lambda 來託管我的網站嗎?

Lambda 不是大多數網站的最佳選擇。事實上,許多 WordPress 託管服務或其他現有平台更適合大多數網站。當您需要託管需要事件驅動函數的應用程序時,Lambda 會大放異彩。

By Henry Taylor

我是後端開發人員。 你們中有些人可能在開發者大會上見過我。 最近我一直在做一個開源項目。