簡介
此實驗室示範如何建立會監控雲端基礎設施和回應事件的無伺服器基礎設施。
在此實驗室的第一部分,您會了解如何搭配 Amazon CloudWatch Events 使用 AWS Lambda 函數,以反應 Amazon EC2 執行個體的建立。
在此實驗室的第二部分,您會建立 AWS Lambda 函數,該函數可監控網站,並在網站未正確回應時傳送警示給您。
涵蓋的主題
此實驗室結束後,您將能夠:
- 建立 AWS Lambda 函數
- 設定 Amazon CloudWatch Events
- 設定 Amazon CloudWatch 警示
- 設定 Amazon Simple Notification Service (SNS) 傳送通知
技術知識先決條件
若要順利完成此實驗室,您應該熟悉 Amazon EC2。儘管我們提供了完整的解決方案程式碼,但還是需要了解 Node.js 程式設計。
圖示圖例
此實驗室使用各種圖示提醒您注意不同類型的指示和注意事項。下列清單說明各圖示的用途:
- 預期輸出:您可使用的範例輸出,以驗證命令的輸出內容或經過編輯的檔案。
- 注意:提示、秘訣或重要指引。
- 重新整理:您可能需要重新整理 Web 瀏覽器頁面或清單,以顯示新資訊的時機。
其他 AWS 服務
在您存取此實驗室期間,IAM 政策會停用此實驗室不需要的其他 AWS 服務。此外,此實驗室可使用的服務功能僅限於實驗室所需的功能,且在某些情況下,更會因為實驗室的刻意設計而進一步受限。存取其他服務或執行此實驗室指南以外的動作時,將會發生錯誤。
技術簡介
AWS Lambda
AWS Lambda 是一項運算服務,可在雲端中提供可調整大小的運算容量,讓開發人員更輕鬆地進行 Web 規模運算。您可以將程式碼上傳到 AWS Lambda,該服務可以使用 AWS 基礎設施代表您執行程式碼。AWS Lambda 支援多種程式語言:Node.js、Java 或 Python。
上傳程式碼並建立 Lambda 函數之後,AWS Lambda 會負責佈建及管理執行程式碼所需的伺服器。在此實驗室中,您將使用 AWS Lambda 做為事件驅動的運算服務,AWS Lambda 會在其中執行程式碼,以回應 SNS 主題和 Amazon S3 儲存貯體中的資料變更。
您可以透過兩種方式使用 AWS Lambda:
- 做為事件驅動的運算服務,讓 AWS Lambda 在回應事件時執行程式碼,例如您會在此實驗室看到的上傳影像檔案。
- 做為運算服務使用,執行程式碼以回應使用 Amazon API Gateway 或 API 呼叫的 HTTP 請求。
Lambda 可為您帶來 Amazon 規模的經濟利益。AWS Lambda 僅在需要時執行程式碼,並會自動擴展,從每天幾個請求到每秒數千個均可執行。Lambda 可讓您輕鬆為 Amazon S3 和 Amazon DynamoDB 等 AWS 服務建立資料處理叫用、處理存放於 Amazon Kinesis 的串流資料,或以 AWS 的規模、效能和安全性建立自己的後端。
AWS Lambda 藍圖
藍圖是事件來源和 Lambda 函數的範例組態,只為您做最少的處理。大部分藍圖處理來自特定事件來源 (例如 Amazon S3 或 DynamoDB) 的事件。例如,如果您選取 s3-get-object 藍圖,它會提供範例程式碼,處理由 Amazon S3 發佈的物件建立事件,Lambda 會接收該事件做為參數。
建立新的 AWS Lambda 函數時,您可以使用最符合您案例的藍圖。然後您可以視需要自訂藍圖。使用藍圖並非必要 (您可以撰寫 Lambda 函數並分別設定事件來源)。
Amazon CloudWatch
CloudWatch Events 會提供近乎即時的系統事件串流,以描述 AWS 資源的變化情形。您可以使用幾分鐘內就能設定的簡單規則,以更低的成本和更高的效率,輕鬆地將每一種事件類型路由到一個或多個目標 (包括 AWS Lambda 函數)。您可以將 CloudWatch Events 視為 AWS 環境的中樞神經系統。它會連接到每一個支援的服務,並在操作發生變更時有所感知。然後,在您的規則驅動下,它會啟用函數,並傳送訊息以回應環境。
Amazon Simple Notification Service (SNS)
相較於開發自訂簡訊解決方案的複雜度,或者需要現場管理和維護的授權系統軟體費用,Amazon SNS 是具有明顯優勢的通知服務。Amazon SNS 在 Amazon 經過驗證的網路基礎設施和資料中心執行,因此只要應用程式需要主題,就可以隨時提供。為了避免訊息遺失,發佈到 Amazon SNS 的所有訊息都會以冗餘方式儲存到多部伺服器和資料中心。Amazon SNS 允許不同裝置上的應用程式和終端使用者透過行動推送通知、HTTP/HTTPS、電子郵件/電子郵件 JSON、SMS 或 Amazon SQS 佇列或 AWS Lambda 函數來接收通知。