本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用現地 AWS OpsWorks Stacks 分離工具
重要
該 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。
本節說明如何使用「就地 AWS OpsWorks Stacks 分離」工具將 OpsWorks 執行個體從 OpsWorks 堆疊服務中分離。
您分離的執行個體將保留在您的執行個體中 AWS 帳戶,但您將無法再使用來管理它們 OpsWorks。相反地,您將使用 Amazon EC2 或任何 EC2 相容方法來設定和管理執行個體。 AWS Systems Manager
在較高層次,分遣隊過程包括以下步驟:
-
該工具執行驗證檢查,以確保資源已準備好進行分離。
-
此工具會從您的 OpsWorks 堆疊匯出自訂 JSON,並將其做為物件存放在 Amazon S3 中。
-
此工具會建立代表每個 OpsWorks 堆疊生命週期事件的 Systems Manager 自動化
-
此工具會為所有要卸離的執行個體建立一個 AWS Service Catalog AppRegistry 目錄,並將任何 Elastic Load Balancing (ELB) 負載平衡器從層分離。 OpsWorks
-
最後,此工具會分離和取消註冊其他資源,包括 Amazon Relational Database Service (Amazon RDS) 執行個體。
流程如何運作
「就地分離」工具提供以下 3 個指令和類似精靈的體驗,可引導您完成一系列步驟,以便在繼續分離圖層之前檢查和設定例證。
Command | 描述 |
---|---|
|
此指令會分析圖層中的所有例證是否符合分離的資格,並解決先決條件。執行個體必須處於狀況良好的狀態 OpsWorks,不能有時間或以負載為基礎的 auto 調度器,而且必須安裝最新的 OpsWorks 代理程式版本。 此外,此命令會檢查所有執行個體是否具有支援 SSM 代理程式所需的權限,以及是否已安裝最新的 SSM 代理程式版本。如果 SSM 代理程式不存在,此命令將會安裝,如果 SSM 代理程式不使用最新版本,則會更新它。該命令還將添加任何必要的權限。 |
|
此指令分離指定圖層的所有 OpsWorks 例證。 首先,該命令將執行先決條件檢查,以確保該層符合分離的資格。如果您不想解決先決條件,您可以選擇強制卸離。 接下來,該命令將指示透過標 OpsWorks 記 API 或透過從圖層和堆疊傳播標籤新增至執行個體的所有標籤都將保留。分離完成後,您可以使用相關 EC2 API 移除任何這些標籤。 然後,命令將檢查是否要將 Chef 相關配置導出到 SSM 參數。 如果您有一個 Classic Load Balancer 連接到該層,該命令將詢問它是否可以卸離負載平衡器,以防止任何停機時間。 |
|
此命令會刪除您帳戶 OpsWorks 中的所有實體。它將終止實例並刪除所有堆棧。這應該用於不再需要作為清理帳戶的最後一步的資源。 注意我們建議您在執行 |
限制
「現地分離」工具的主要用途是安全地分離 OpsWorks 堆疊例證。本節概述了該工具的限制。
-
Windows SSM 代理程式 — 如果 SSM 代理程式未安裝在執行個體上,您必須手動安裝它。如果代理程式未更新至最新版本,則同樣適用。
-
時間/載入自動縮放實體 — 分離工具不支援啟用「Auto Scaling」的執行個體。您必須在要分離的執行個體上停用「Auto Scaling 例」。
-
權限 — 卸離工具不會建立或產生在主控台的 [權限] 頁面上指定的 IAM 實體。 OpsWorks
-
應用程式 — 分離工具不會在以外建立或產生應用程式。 OpsWorks
開始使用
步驟 1:確認是否符合先決條件
就地分離工具的所有 3 個命令都是 Python 腳本,您可以在本地,在 EC2 實例上或使用 AWS CloudShell.
AWS CloudShell 是一個以瀏覽器為基礎的 shell,可讓您存取所選 AWS AWS 區域資源的命令列。 AWS CloudShell 預先安裝了流行的工具(例如 AWS CLI 和 Python)。使用時 AWS CloudShell,您會使用與登入主控台相同的認證。
本逐步解說假設您正在使用 AWS CloudShell.
步驟 2:下載指令碼
-
執行下列命令,下載包含移轉指令碼和所有相關檔案的 zip 檔案:
aws s3api get-object \ --bucket detach-in-place-bucket-prod-us-east-1 \ --key detach_in_place_script.zip detach_in_place_script.zip
-
通過運行以下命令解壓縮文件。
unzip detach_in_place_script.zip
解壓縮檔案之後,即可使用下列檔案:
-
雷德美. MD
-
執照
-
NOTICE
-
requirements.txt
-
TODO.py
-
-
如有必要,請執
pipenv
行下列命令進行安裝。pip install pipenv
步驟 3:執行指令碼
首先,設定您的環境,以便執行下列命令來執行指令碼。
pipenv install -r requirements.txt pipenv shell
然後,檢閱指令碼參數。
Command | 參數 | Description (描述) | Type | 必要 | 預設 |
---|---|---|---|---|---|
|
|
您要分離的圖層的 ID。 |
字串 |
是 |
- |
|
OpsWorks 堆疊的區域。如果您的 OpsWorks 堆疊區域和 API 端點區域不同,請使用堆疊區域。此區域與 OpsWorks 堆疊中其他資源部分 (例如 EC2 執行個體和子網路) 的區域相同。 |
字串 |
否 |
us-east-1 |
|
|
|
要分離的圖層的 ID。 |
字串 |
是 |
- |
|
要從圖層分離的副本數目 (例如 5)。 |
字串 |
否 |
- |
|
|
OpsWorks 堆疊的區域。如果您的 OpsWorks 堆疊區域和 API 端點區域不同,請使用堆疊區域。此區域與 OpsWorks 堆疊中其他資源部分 (例如 EC2 執行個體和子網路) 的區域相同。 |
字串 |
否 |
us-east-1 |
|
|
|
您要刪除之堆疊的識別碼。 |
字串 |
否 |
互斥,您必須指定層 ID 或堆疊 ID |
|
要刪除的圖層 ID |
字串 |
否 |
||
|
OpsWorks 堆疊的區域。如果您的 OpsWorks 堆疊區域和 API 端點區域不同,請使用堆疊區域。此區域與 OpsWorks 堆疊中其他資源部分 (例如 EC2 執行個體和子網路) 的區域相同。 |
字串 |
否 |
us-east-1 |
您可以透過使用選項執行cleanup
指令detach
,來查看handle-prerequisites
和指令的可用--help
選項,如下所示:
python3 layer_detacher.py detach --help python3 layer_detacher.py handle-prerequisites --help python3 layer_detacher.py cleanup --help
您現在已準備好開始使用。下列範例顯示如何針對不同的使用案例執行命令。
範例:
範例 1:檢查圖層是否符合所有先決條件且符合分遣隊的資格
下列指令會讀取有關 OpsWorks 層 (及其包含的例證) 的資訊,並檢查是否符合下列先決條件:
-
所有實例都在線。
-
沒有「載入/時間 Auto Scaling」執行個體。
-
所有執行個體都有最新的 OpsWorks Agent。
-
所有執行個體都已安裝並設定最新的 SSM 代理程式。
-
所有執行個體都有安全殼層 key pair。
-
每個實體只屬於一個圖層。
python3 layer_detacher.py handle-prerequisites \ --layer-id
opsworks-layer-id
\ --regionopsworks-stack-region
範例 2:分離圖層的所有例證
下列命令會重複執行層的所有執行個體、檢查執行個體是否符合先決條件,並嘗試以 parallel 方式分離所有符合先決條件的執行個體。如果不符合一或多個先決條件,命令會為其餘的不相容執行個體提供強制卸離選項。
在分離任何實例之前,該命令將:
-
儲存自訂 JSON 並將其上傳到 S3。
-
為該層的每個 OpsWorks 生命週期事件建立 SSM 自動化文件,並將自動化文件的執行日誌上傳到 S3。
-
為將分離的所有執行個體建立 AppRegistry 應用程式。該應用程序具有與其關聯的資源組,其中包含所有分離的實例和資源。這些資源包括 SSM 自動化文件和 SSM 參數,其中包含生命週期事件和自訂 Chef 方法的相關資訊。
-
將「Classic Load Balancer」與層分離 (如果有的話)。
這個命令只會修改 OpsWorks 資源。EC2 執行個體的狀態將保持不變。
python3 layer_detacher.py detach \ --layer-id
opsworks-layer-id
\ --regionopsworks-stack-region
範例 3:批次解除貼附圖層的所有例證
下列命令的作用與前一個範例相同。唯一的區別是它會分批分離執行個體。
這個命令只會修改 OpsWorks 資源。EC2 執行個體的狀態將保持不變。
python3 layer_detacher.py detach \ --layer-id
opsworks-layer-id
\ --regionopsworks-stack-region
\ --batch-size5
範例 4:清除圖層的所有資源並刪除圖層
以下命令將遍歷圖層的所有資源並將其刪除。更詳細地說,它將停止並刪除 OpsWorks 和 EC2 中的所有執行個體、卸離負載平衡器並取消註冊 Amazon RDS 執行個體、彈性 IP 和磁碟區。清理資源後,它將刪除該圖層。
此命令將刪除 OpsWorks 資源和 EC2 實例。如果您希望 EC2 執行個體保持不變,請在使用指detach
令之前使用命cleanup
令。這樣,該cleanup
命令將刪除所有剩餘的資源。
python3 layer_detacher.py cleanup \ --layer-id
opsworks-layer-id
\ --regionopsworks-stack-region
示例 5:清理堆棧的所有資源並刪除堆棧
以下命令將遍歷所有圖層,然後遍歷每個層的資源。對於每一層,該命令將停止並刪除 OpsWorks 和 EC2 中的所有執行個體、卸離負載平衡器,以及取消註冊 Amazon RDS 執行個體、彈性 IP 和磁碟區。然後,該命令將刪除該圖層。相同的過程將在屬於此堆棧的每個層中執行。最後,刪除所有圖層後,堆疊將被移除。
此命令將刪除 OpsWorks 資源和 EC2 實例。如果您希望 EC2 執行個體保持不變,請在使用指detach
令之前使用命cleanup
令。這樣,該cleanup
命令將刪除所有剩餘的資源。
python3 layer_detacher.py cleanup \ --stack-id
opsworks-stack-id
\ --regionopsworks-stack-region
步驟 4:分離後繼續操作您的資源 OpsWorks
執行detach
指令後,工具會建立與分離圖層對 AWS Service Catalog AppRegistry
應的新應用程式。應用程式名稱遵循格式
。它也會新增標layer-name
---layer-id
OpsWorksLayerId
籤,以唯一識別與分離圖層相符的應用程式。
要向此應用程序添加新 AWS 資源(例如,新的 EC2 實例),可以執行以下操作之一:
-
使用應用程式的唯一應用程式標籤來 AppRegistry標記資源:
標籤鍵:
awsApplication
值:
arn:aws:resource-groups:
region
:account-id
:group/application-name
/application-id
> -
執行 associate-resource 命令。
此外,會針對每個 AppRegistry 應用程式建立資源群組。資源群組包含下列標籤。
標籤鍵 | Value |
---|---|
|
|
|
|
|
|
|
|
分遣隊後執行工作
下表提供分離後如何執行工作的相關資訊:
任務 | 描述 |
---|---|
執行生命週期事 |
執行 每個自動化文件的名稱均遵循以下格式: 若要模擬 Systems Manager 中的 OpsWorks 行為,您需要在佈建、終止 EC2 執行個體或部署/移除配方時手動觸發自動化執行。 |
更新自訂 JSON |
堆疊和層的自訂 JSON 存放在分離期間指定的 S3 儲存貯體中,或者存放在建立的新 S3 儲存貯體中。 為 JSON 檔案儲存的檔案名稱如下:
|
變更生命週期事件的執行清單 |
每個生命週期事件的執行清單均在對應的自動化文件中定義。若要變更執行清單,請在 AppRegistry 應用程式中尋找自動化文件並修改 更新方法和食譜的程序不會變更 |
管理auto 修復/auto 縮放 |
卸離執行個體時, OpsWorks 代理程式會解除安裝。如果沒有代理程式,就 OpsWorks 無法自動修復或取代運作狀態不良的執行個體,也無法 auto 動擴展叢集。若要繼續 auto 擴展和取代失敗的執行個體,請建立 Amazon EC2 Auto Scaling 群組。當 Amazon EC2 偵測到需要更換運作狀態不良的執行個體時,該群組將啟動新執行個體以維持所需的容量。 |
管理 Load Balancer |
如果您的層使用 Classic Load Balancer,則該 |
連線到您的執行個體 |
當您執行
這些命令也提供您更新 SSM 代理程式和新增必要權限的選項,讓您可以使用工作階段管理員連線至執行個體。如果安全殼層金鑰存在,您也可以選擇透過 SSH 存取執行個體。 |
使用 Systems Manager 應用程式管理員實例標
分離後,您可以在「應用程式管理員執行個體」標籤上檢視和管理您的執行個體。
[執行個體] 索引標籤提供應用程式 EC2 執行個體的彙總資訊,例如其狀態、運作狀態和上次命令狀態。使用此索引標籤,您可以檢視個別執行個體的詳細資訊,例如命令歷程記錄、警示狀態、Systems Manager 代理程式健全狀況等。[執行個體] 索引標籤也提供各種動作,例如套用 Chef 方法、啟動或停止執行個體,或是從 Auto Scaling 群組新增或移除執行個體。