在啟動時檢查 EC2 執行個體是否有強制性標籤 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在啟動時檢查 EC2 執行個體是否有強制性標籤

Susanne Kangnoh 和 Archit Mathur,Amazon Web Services

Summary

Amazon Elastic Compute Cloud (Amazon EC2) 在 Amazon Web Services (AWS) Cloud 提供可擴展的運算容量。使用 Amazon EC2 可減少前期所需的硬體投資,讓您更快速開發並部署應用程式。

您可以使用標記,以不同的方式分類您的 AWS 資源。當您帳戶中有許多資源,而且您想要根據標籤快速識別特定資源時,EC2 執行個體標記非常有用。您可以使用標籤將自訂中繼資料指派給 EC2 執行個體。標籤由使用者定義的索引鍵和值組成。我們建議您建立一組一致的標籤,以符合組織的需求。 

此模式提供 AWS CloudFormation 範本,協助您監控特定標籤的 EC2 執行個體。範本會建立監控 AWS CloudTrail TagResource 或 UntagResource 事件的 Amazon CloudWatch Events 事件,以偵測新的 EC2 執行個體標記或標籤移除。 CloudTrail TagResource UntagResource 如果缺少預先定義的標籤,它會呼叫 AWS Lambda 函數,該函數會使用 Amazon Simple Notification Service (Amazon SNS) 將違規訊息傳送至您提供的電子郵件地址。 

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 用來上傳所提供 Lambda 程式碼的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。

  • 您想要接收違規通知的電子郵件地址。

限制

  • 此解決方案支援 CloudTrail TagResourceUntagResource 事件。它不會為任何其他事件建立通知。

  • 此解決方案只會檢查標籤索引鍵。它不會監控索引鍵值。

架構

工作流程架構

Workflow diagram showing AWS 服務 interaction for EC2 instance monitoring and notification.

自動化和擴展

  • 您可以針對不同的 AWS 區域和帳戶多次使用 AWS CloudFormation 範本。您只需要在每個區域或帳戶中執行範本一次。

工具

AWS 服務

  • Amazon EC2 – Amazon Elastic Compute Cloud (Amazon EC2) 是一種 Web 服務,可在雲端中提供安全、可調整大小的運算容量。它旨在讓開發人員更輕鬆地進行 Web 規模雲端運算。

  • AWS CloudTrail – CloudTrail 是一種 AWS 服務,可協助您進行 AWS 帳戶的控管、合規以及操作和風險稽核。使用者、角色或 AWS 服務採取的動作會在 CloudTrail 中記錄為事件。 

  • Amazon CloudWatch Events – Amazon CloudWatch Events 提供近乎即時的系統事件串流,說明 AWS 資源的變更。CloudWatch Events 會在操作變更發生時得知並在必要時採取修正動作,方法是傳送訊息以回應環境、啟用 函數、進行變更,以及擷取狀態資訊。 

  • AWS Lambda – Lambda 是一種運算服務,支援執行程式碼,而不需要佈建或管理伺服器。Lambda 只有在需要時才會執行程式碼,可自動從每天數項請求擴展成每秒數千項請求。 

  • Amazon S3 – Amazon Simple Storage Service (Amazon S3) 是一種高度可擴展的物件儲存服務,可用於各種儲存解決方案,包括網站、行動應用程式、備份和資料湖。

  • Amazon SNS – Amazon Simple Notification Service (Amazon SNS) 是一種 Web 服務,可讓應用程式、最終使用者和裝置立即從雲端傳送和接收通知。

Code

此模式包含兩個檔案的附件:

  • index.zip 是一種壓縮檔案,其中包含此模式的 Lambda 程式碼。

  • ec2-require-tags.yaml 是部署 Lambda 程式碼的 CloudFormation 範本。

如需如何使用這些檔案的資訊,請參閱 Epics 一節。

史詩

任務描述所需的技能
將程式碼上傳至 S3 儲存貯體。

建立新的 S3 儲存貯體或使用現有的 S3 儲存貯體上傳連接index.zip的檔案 (Lambda 程式碼)。此儲存貯體必須與您要監控的資源 (EC2 執行個體) 位於相同的 AWS 區域。

雲端架構師
部署 CloudFormation 範本。

在與 S3 儲存貯體相同的 AWS 區域中開啟 Cloudformation 主控台,並部署附件中提供ec2-require-tags.yaml的檔案。在下一個史詩中,提供範本參數的值。 

雲端架構師
任務描述所需的技能
提供 S3 儲存貯體名稱。

輸入您在第一個特徵中建立或選取的 S3 儲存貯體名稱。此 S3 儲存貯體包含 Lambda 程式碼的 .zip 檔案,且必須與 CloudFormation 範本和您要監控的 EC2 執行個體位於相同的 AWS 區域。

雲端架構師
提供 S3 金鑰。

提供 Lambda 程式碼 .zip 檔案在 S3 儲存貯體中的位置,不帶正斜線 (例如 index.zipcontrols/index.zip)。

雲端架構師
提供電子郵件地址。

提供您要接收違規通知的作用中電子郵件地址。

雲端架構師
定義記錄層級。

指定記錄層級和詳細程度。 會Info指定應用程式進度的詳細資訊性訊息,且應僅用於偵錯。 會Error指定仍然可以允許應用程式繼續執行的錯誤事件。 會Warning指定可能有害的情況。

雲端架構師
輸入所需的標籤索引鍵。

輸入您要檢查的標籤索引鍵。如果您想要指定多個金鑰,請以逗號分隔,不含空格。(例如, ApplicationId,CreatedBy,Environment,Organization 會搜尋四個金鑰。) CloudWatch Events 事件會搜尋這些標籤索引鍵,並在找不到它們時傳送通知。

雲端架構師
任務描述所需的技能
確認電子郵件訂閱。

當 CloudFormation 範本成功部署時,它會傳送訂閱電子郵件訊息到您提供的電子郵件地址。若要接收通知,您必須確認此電子郵件訂閱。 

雲端架構師

附件

若要存取與本文件相關聯的其他內容,請解壓縮下列檔案: attachment.zip