09/09 2020

AWS Lambda 是什麼?如何使用 Lambda 來自動啟動或停止 EC2 實例

AWS快問快答

想到AWS Lambda,您會想到有哪些應用呢?透過 AWS Lambda 函數可以控制 Amazon EC2 使用量,自動停止、終止、重新啟動或復原您的執行個體。

當執行個體不再需要執行時,您可以使用停止或終止動作以協助您節省成本;當遇到系統受損的狀況,您可以使用重新啟動和復原動作,自動重新啟動這些執行個體或將它們復原到新的硬體。

AWS Lambda 是什麼?

AWS Lambda 是一項無伺服器運算服務。它讓企業能夠在不需要配置或管理伺服器的情況下執行程式碼。無伺服器運算的概念代表說開發者不再需要擔心基礎設施的維護與管理,而是能專注於程式碼的邏輯實現。Lambda 會根據需求自動調整應用程式的規模,無論是處理少量請求還是應對高流量高峰,系統都能平穩運行。這項服務還支援多種程式語言,包括 Python、Node.js、Java、Ruby 等,為開發者提供了靈活的選擇。

AWS Lambda 的計費模式同樣採用PAYG(Pay As You Go,用多少付多少)的模式,只需為程式碼實際執行的時間付費,精確到毫秒,並且不需要支付閒置時間的費用。這使得企業能以最小的成本實現高度彈性的運算能力。除了成本效益,AWS Lambda 還可以與其他 AWS 服務無縫整合,例如 S3、DynamoDB、Kinesis 和 API Gateway,進一步擴展其功能範圍。無論是處理實時數據流、執行後端邏輯還是觸發事件,Lambda 都是企業數位轉型的理想工具。

AWS Lambda 有哪些應用場景?

想像一下,一個電商平台在限時搶購期間會經歷頻繁的流量高峰。AWS Lambda 可以與 Amazon Kinesis 整合,用於即時處理交易數據流。舉例來說,當客戶下單時,Lambda 函數可以驗證付款、更新庫存記錄,並發送確認電子郵件—所有動作都能在幾秒鐘內完成,且不會出現伺服器過載的風險。

另外則是排程任務,對於物流公司而言,追蹤車隊排程和維護情況至關重要。AWS Lambda 可以與 Amazon EventBridge 搭配使用,自動化排程任務。一個 Lambda 函數可以每天早晨執行,檢查車輛維護日誌、向司機發送提醒,並為管理團隊生成報告。

後端 API 希望推出新手機應用程式的新創公司,可以使用 AWS Lambda 建立具擴展性且具成本效益的後端 API。透過將 Lambda 與 Amazon API Gateway 整合,企業可以部署一個完整的後端系統,用於處理用戶驗證、數據檢索和應用程式更新—而無需維護傳統的伺服器基礎架構。

在媒體行業中,企業經常需要處理大量使用者生成的內容。Lambda 可以自動處理上傳的影片,並將其進行壓縮。舉例來說,一家新聞機構可以使用 Lambda 函數來調整上傳至 S3 存儲桶的影像大小並壓縮它們,以確保網站的加載速度更快。

不僅如此 AWS Lambda還可以提升 EC2 的效能,AWS Lambda 可以通過卸載短時任務來補充 EC2 執行個體(Instance),以節省資源。例如,一家金融服務公司在 EC2 上運行模擬時,可能使用 Lambda 處理預處理和後處理任務,例如數據清理和結果聚合,從而釋放 EC2 實例以進行更密集的計算。

上述的案例,讓您更加了解AWS Lambda 有哪些實際的產業應用,今天我們將帶您深入解析技術實戰,如何使用AWS Lambda 來自動啟用或停止 Amazon EC2 的執行個體,以確保雲端資源的妥善運用。

簡易步驟說明

步驟一、為 Lambda 函數創建 IAM 中 Policy(政策)和 Roles (角色)

步驟二、創建 Lambda 函數,執行停止和啟動 EC2 實例

步驟三、建立 CloudWatch Events 規則,並觸發 Lambda 函數

設定步驟

一、為 Lambda 函數創建 IAM 中 Policy(政策)和 Roles (角色)

1. Open the Amazon IAM console at https://console.aws.amazon.com/iam/

2. 在左側的導覽窗格中,選擇 Policies(政策),再選擇 Create policy(建立政策)

3. 選擇 JSON 標籤,以透過 JSON 文字方塊來修改 Policy。

4. 在 JSON 文字方塊中貼上下列 policy (政策) 權限後,點選 Review Policy (檢閱政策)

 

5. 在 Review policy (檢閱政策) 的 Name 欄位輸入 policy (政策)的名稱,並點擊 Create policy (建立政策)

 

6. 在左側導覽窗格中,選擇 Roles(角色) →  Create role (建立新角色)

 

7. 在「Select type of trusted entity (選取受信任實體的類型)」中,選擇 AWS service;Choose the service that will use this role (選擇將使用此角色的服務)」中選擇 Lambda,再點擊 Next: Permissions (下一步:許可)

 

8. 在 Attach permissions policies (連接許可政策) 區段上,選擇您剛才建立的 policy (政策)後,點擊 Next: Tags (下一步: 標籤)

  

9. (此步驟可選填) 輸入標籤的金鑰和值,點擊 Next: Review (下一步:檢閱)

  

10. 在 Review (檢閱) 頁面上,輸入您新角色的名稱和描述,點擊 Create role (建立角色)

 

二、創建 Lambda 函數,執行停止和啟動 EC2 實例

1. 創建一個停止 EC2 實例 Lambda 函數,開啟 Lambda 主控台,點擊 Functions → Create a function (建立函數)

2. 在 Create function (建立函數) 區段中,點擊 Author from scratch (從頭開始撰寫)

 

3. 在 Basic information (基本資訊) 下,請執行下列動作:

(1) Function name (函數名稱):輸入您所要標示的名稱(例如:StopEC2Instances)

(2) Runtime (執行時間):選擇 Python 3.7

(3) Execution role (執行角色):選擇 Use an existing role (使用現有的角色)

(4) Existing role (現有的角色):選擇您剛才建立的 role (角色)

(5) 點擊 Create function (建立函數)

4. 在Function code (函式程式碼) 中的 lambda_function (函式編輯器),輸入下方函式程式碼,點擊 Save (儲存)

   注意:請將下列程式碼中的 region 後面“ us-west-1”替換為 instance 所在的 AWS 區域。 instances 則替換為要停止和啟動的特定 instance 的 ID

 

5. 在 Lambda 函數窗格中,向下捲動至 Basic settings (基本設定) 區段,點擊 Edit (編輯),並將 Memory 設定為 128 MB 和 Timeout 增加為 10 秒,點擊 Save (儲存)

6. 回到 Lambda 主控台,選擇 Functions (函式),選擇您創建的 StopEC2Instances functions,點擊 Action (操作) →  Test (測試)

 

7. 在 Configure test event (設定測試事件) 頁面上,執行下列動作後,點擊 Create (建立)

(1) 選擇 Create new test event (建立新測試事件)

(2) 在 Event name (事件名稱) 欄位內,輸入事件的名稱

  

8. 點擊 Functions (函式) → Action (操作) →  Test (測試),再一次測試 Lambda 是否正常運行,即完成 StopEC2Instances Lambda 函數設定

 

9. 創建另一個啟動 EC2 實例 Lambda 函數,開啟 Lambda 主控台,在 Create function (建立函數) 區段中,點擊 Author from scratch (從頭開始撰寫)

 

10. 在 Basic information (基本資訊) 下,請執行下列動作:

(1) Function name (函數名稱):輸入您所要標示的名稱 (例如:StopEC2Instances)

(2) Runtime (執行時間):選擇 Python 3.7

(3) Execution role (執行角色):選擇 Use an existing role (使用現有的角色)

(4) Existing role (現有的角色):選擇您剛才建立的 role (角色)

(5) 點擊 Create function (建立函數)

11. 在 Function code (函式程式碼) 中的 lambda_function (函式編輯器),輸入下方函式程式碼,點擊 Save (儲存)

注意:請將下列程式碼中的 region後面 “ us-west-1” 替換為 instance 所在的 AWS 區域。 instances 則替換為要停止和啟動的特定 instance 的 ID

12. 在 Lambda 函數窗格中,向下捲動至 Basic settings (基本設定) 區段,點擊 Edit (編輯),並將 Memory 設定為 128 MB 和 Timeout 增加為 10 秒,點擊 Save (儲存)

13. 回到 Lambda 主控台,選擇 Functions (函式),選擇您創建的 StopEC2Instances functions

   點擊 Action (操作) →  Test (測試)

  

14. 在 Configure test event (設定測試事件) 頁面上,執行下列動作後,點擊 Create (建立)

(1) 選擇 Create new test event (建立新測試事件)

(2) 在 Event name (事件名稱) 欄位 內,輸入事件的名稱

  

15. 點擊 Functions (函式) → Action (操作) →  Test (測試),再一次測試 Lambda 是否正常運行,如正常即完成StopEC2Instances Lambda 函數

  

三、建立CloudWatch Events規則,並觸發 Lambda函數

1. 開啟 CloudWatch 主控台

2. 在導覽窗格中,點擊 Rules (規則) → Create rule (建立規則)

 

3. 在 Event Source 對話方塊中選擇 Schedule (排程) →  Cron expression (Cron 表達式),指定用於定義何時觸發該任務的 cron 表達式

   Note:如需 cron 表達式語法的詳細資訊,請參閱排程規則表達式

 

4. 在指定或驗證規則選擇 Add target (新增目標),在 Select target type (選擇目標類型) 清單中,選擇 Lambda function,在 Function 中選擇剛才建立的 StopEC2Instances functions

 

5. 點擊 Configure details (設定詳細資訊)

6. 在 Configure rule details (設定規則詳細資訊) 頁面上,輸入規則的名稱:StopEC2Schedule和描述,勾選 State (狀態) 方塊使規則建立時能立即啟用

7. 點擊 Create rule (新增規則) 確認您選取的項目 

8. 完成 StopEC2Schedule 後,再創建另一個 rule 來啟動 EC2 實例。

 在導覽窗格中,點擊 Rules (規則) → Create rule (建立規則)

 

9. 在 Event Source 對話方塊中選擇 Schedule (排程) →  Cron expression (Cron 表達式),指定用於定義何時觸發該任務的 cron 表達式

   Note:如需 cron 表達式語法的詳細資訊,請參閱排程規則表達式

 

10. 在指定或驗證規則選擇 Add target (新增目標),在 Select target type (選擇目標類型) 清單中,選擇 Lambda function;在 Function 中選擇剛才建立的 StartEC2Instances functions

 

11. 點擊 Configure details (設定詳細資訊)

12. 在 Configure rule details (設定規則詳細資訊) 頁面上,輸入規則的名稱:StartEC2Schedule和描述,點擊 State (狀態) 方塊來在規則建立時立即啟用 

13. 點擊 Create rule (新增規則) 確認您選取的項目

 

完成以上步驟後,即可透過使用 Lambda 來進行自動啟動或停止 EC2 實例啦!

是不是清楚、簡單又快速呢?

請持續鎖定 Nextlink 架構師專欄,以獲得最新專業資訊喔!

若您有任何 AWS 需求,歡迎與我們聯繫!