09/09 2020

如何使用 Lambda 來自動啟動或停止 EC2 實例

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 需求,歡迎與我們聯繫!