在啟動時強制對 Amazon EMR 叢集進行標記 - AWS Prescriptive Guidance

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

在啟動時強制對 Amazon EMR 叢集進行標記

由喬德瑞 (AWS) 創建

環境:生產

技能:分析;安全、身份與合規

AWS 服務:亞馬遜 EMR; AWS Lambda; Amazon CloudWatch Events

Summary

此模式提供安全控制,可確保 Amazon EMR 叢集在建立時加上標籤。 

亞馬遜 EMR 是一種用於處理和分析大量數據的 Amazon Web Services 務(AWS)服務。Amazon EMR 提供可擴充、低組態的服務,作為執行內部叢集運算的更簡單替代方案。您可以使用標記,以不同的方式分類 AWS 資源,例如依據目的、擁有者或環境。例如,您可以透過為每個叢集指派自訂中繼資料來標記 Amazon EMR 叢集。每個標籤都是由您定義的索引鍵/值組所構成。我們建議您建立一組一致的標籤,以滿足您組織的需求。當您將標籤新增到 Amazon EMR 叢集時,該標籤也會傳播到與該叢集相關聯的每個作用中的 Elastic Compute Cloud (Amazon EC2) 執行個體。同樣地,當您從 Amazon EMR 叢集移除某個標籤,會將該標籤從每個相關作用中的 EC2 執行個體中移除。

偵測控制項會監控 API 呼叫,並為RunJobFlowAddTagsRemoveTags,以及CreateTagsAPI。該事件會呼叫 AWS Lambda (執行 Python 指令碼)。Python 函數會從事件的 JSON 輸入中取得 Amazon EMR 叢集識別碼,並執行下列檢查:

  • 檢查 Amazon EMR 叢集是否使用您指定的標籤名稱配置。

  • 如果沒有,請向使用者傳送 Amazon 簡易通知服務 (Amazon SNS) 通知,其中包含此通知源自 Lambda 的 Amazon EMR 叢集名稱、違規詳細資料、AWS 區域、AWS 帳戶和 Amazon 資源名稱 (ARN)。

先決條件和限制

先決條件

  • 作用中的 AWS 帳戶

  • 一個 Amazon Simple Storage Service (Amazon S3) 儲存貯體,用於上傳所提供的 Lambda 程式碼。或者,您可以為此用途建立 S3 儲存貯體,如史詩區段。

  • 您希望接收違規通知的作用中的電子郵件地址。

  • 您要檢查的必要標籤清單。

限制

  • 這種安全控制是區域性的。您必須將其部署在要監控的每個 AWS 區域中。

產品版本

  • Amazon EMR 4.8.0 版和更新版本。

Architecture

工作流程architecture

自動化和擴充

Tools

AWS 服務

  • AWS CloudFormation— AWS CloudFormation 可協助您為 AWS 資源建立模型和設定,以及快速且一致地佈建 AWS 資源,並在整個生命週期內進行管理。您可以使用範本來描述資源及其相依性,並將它們一起啟動並設定為堆疊,而不是個別管理資源。您可以跨多個 AWS 帳戶和 AWS 區域管理和佈建堆疊。

  • Amazon CloudWatch Events-Amazon CloudWatch Events 會將近乎即時的系統事件串流,傳送到 AWS 資源中的變更。

  • Amazon EMR-Amazon EMR 是可簡化執行巨量資料架構並有效地處理大量資料的 Web 服務。

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

  • Amazon S3— Amazon Simple Storage Service (Amazon S3) 是一項物件儲存服務。您可以使用 Amazon S3 隨時從 Web 任何地方存放和擷取任意資料量。

  • Amazon SNS— Amazon Simple Notification Service (Amazon SNS) 協調和管理發佈商和用戶端之間的訊息傳遞或傳送,包括 Web 伺服器和電子郵件地址。訂閱者會收到發佈到所訂閱主題的所有訊息,且某一主題的所有訂閱者均會收到相同訊息。

Code

此樣式包含下列附件:

  • EMRTagValidation.zip— 安全性控制項的 Lambda 程式碼。

  • EMRTagValidation.yml— 設定事件和 Lambda 函數的 CloudFormation 範本。

Epics

任務描述所需的技能
定義 S3 儲存貯體。

Amazon S3 主控台中,選擇或建立 S3 儲存貯體來裝載 Lambda 程式碼 .zip 檔案。此 S3 儲存貯體必須位於與您要監控的 Amazon EMR 叢集相同的 AWS 區域。Amazon S3 儲存貯體的名稱必須是全域唯一,且命名空間會由所有 AWS 帳戶共享。S3 儲存貯體名稱不能包含前導斜線。

雲端
上傳 Lambda 程式碼。

上傳提供的 Lambda 程式碼 .zip 檔案附件區段新增到 S3 儲存貯體。                                             

雲端
任務描述所需的技能
啟動 AWS CloudFormation 範本。

開啟AWS CloudFormation 主控台位於與 S3 儲存貯體相同的 AWS 區域,然後部署範本。如需 AWS CloudFormation 範本部署的詳細資訊,請參閱在 AWS CloudFormation 主控台上建立堆疊在 CloudFormation 文檔中。

雲端
完成範本中的參數。

當您啟動範本時,系統會提示您輸入下列資訊:

  • S3 儲存貯體:指定您在第一個史詩封存中建立或選取的儲存貯體。這是您上傳附加的 Lambda 代碼(.zip 文件)的地方。

  • S3 金鑰:在 S3 儲存貯體中指定 Lambda .zip 檔案的位置 (例如,filename.zip 或控制項/filename.zip)。請勿包含前導斜線。

  • 通知電子郵件:提供您要在其中接收 Amazon SNS 通知的作用中的電子郵件地址。 

  • 為金鑰名稱加上標籤:以逗號分隔的清單形式提供您要檢查的標籤 (例如ApplicationIDEnvironmentOwner。CloudWatch 事件會監控叢集中是否有這些標籤,並在找不到時傳送通知。

  • Lamba 記錄層級:指定 Lambda 函數的記錄層級和頻率。使用Info記錄有關進度的詳細信息,錯誤以查看仍然允許部署繼續的錯誤事件,以及警告針對潛在有害的狀況。                                       

雲端
任務描述所需的技能
確認訂閱。

當 CloudFormation 範本部署成功時,它會傳送訂閱電子郵件到您提供的電子郵件地址。您必須確認此電子郵件訂閱,才能開始接收違規通知。

雲端

相關資源

Attachments

attachment.zip