步驟 3:設定環境以執行指令碼 - AWS OpsWorks

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

步驟 3:設定環境以執行指令碼

使用下列命令將您的環境設定為執行指令碼。

pipenv install -r requirements.txt pipenv shell
注意

目前,指令碼只能在應用程式管理員中佈建單層應用程式。例如,如果您對同一堆疊中的兩個圖層執行指令碼兩次,指令碼會在「應用程式管理員」中建立兩個不同的應用程式。

設定環境之後,請檢閱指令碼參數。您可以執行命令來檢視移轉python3 stack_exporter.py --help指令碼的可用選項。

參數 描述 必要 Type 預設值
--layer-id 匯出此 OpsWorks 圖層 ID 的 CloudFormation 範本。 string
--region OpsWorks 堆疊的 AWS 區域。如果您的 OpsWorks 堆疊區域和 API 端點區域不同,請使用堆疊區域。此區域與 OpsWorks堆疊中其他資源部分 (例如 EC2 執行個體和子網路) 的區域相同。 string us-east-1
--provision-application 依預設,指令碼會佈建 CloudFormation 範本所匯出的應用程式。將此參數傳遞至值為 FALSE 的指令碼,即可略過 CloudFormation範本的佈建。 Boolean TRUE
--launch-template

此參數定義是使用現有的啟動範本,還是建立新的啟動範本。您可以建立使用建議執行個體屬性的新啟動範本,或使用與線上執行個體相符的執行個體屬性。

有效值包含:

  • RECOMMENDED-針對 OpsWorks堆疊的作業系統和 c5.large 執行個體大小使用來自最新 AMI 的執行個體特性。

  • MATCH_LAST_INSTANCE-使用最新可用的線上執行個體特性。

  • LaunchTemplateID/[LaunchTemplateVersion]-使用現有的啟動範本。或者,您可以提供範本版本。如果您未提供範本版本,指令碼會使用預設版本。

string RECOMMENDED
--system-updates

定義是否在執行個體啟動時執行核心和套件更新。

有效值包含:

  • ALL_UPDATES-執行個體啟動時,執行核心和套件的系統更新。

  • NO_UPDATES-執行個體啟動時不執行系統更新。

  • MATCH_LAYER_SETTINGS-使用圖 OpsWorks層或執行個體的InstallUpdatesOnBoot屬性來決定是否要安裝系統更新。

string ALL_UPDATES
--http-username Systems Manager SecureString 參數的名稱,此參數會將用來驗證的使用者名稱儲存至包含自訂食譜的 HTTP 封存檔。 string
--http-password Systems Manager SecureString 參數的名稱,此參數會將用來驗證的密碼儲存至包含自訂食譜的 HTTP 封存檔。 string
--repo-private-key Systems Manager SecureString 參數的名稱,此參數會將用來驗證的 SSH 金鑰儲存至包含自訂食譜的儲存庫。如果存放庫已開啟 GitHub,您必須產生新的 Ed25519 SSH 金鑰。如果您未產生新的Ed25519安全殼層金鑰,則與 GitHub 存放庫的連線會失敗。 string
--lb-type

移轉現有負載平衡器時要建立的負載平衡器類型 (如果有的話)。

有效值包含:

  • ALB(Application Load Balancer)

  • Classis(Classic Load Balancer)

  • None(如果您不想建立負載平衡器)

string ALB
--lb-access-logs-path 用於存放負載平衡器存取日誌的現有 S3 儲存貯體和前置詞的路徑。S3 儲存貯體和負載平衡器必須位於相同區域。如果您未提供值且--lb-type參數值設定為None,則指令碼會建立新的 S3 儲存貯體和前置詞。請確定此前置字元有適當的儲存貯體政策。 string
--enable-instance-protection 如果設定為TRUE,則指令碼會為您的自 Auto Scaling 群組建立自訂終止政策 (Lambda 函數)。具有protected_instance標籤的 EC2 執行個體受到保護,不受擴充事件影響。為每個要保護不受擴充事件影響的 EC2 執行個體新增protected_instance標籤。 Boolean FALSE
--command-logs-bucket 用於存放AWS ApplyChefRecipeMountEBSVolumes日誌的現有 S3 儲存貯體的名稱。如果您未提供值,指令碼會建立新的 S3 儲存貯體。 string aws-opsworks-application-manager-logs-account-id
--custom-json-bucket 用於存放自訂 JSON 的現有 S3 儲存貯體的名稱。如果您未提供值,指令碼會建立新的 S3 儲存貯體。 string aws-apply-chef-application-manager-transition-data-account-id

備註

  • 如果您使用私人 GitHub 存放庫,則必須為 SSH 建立新的Ed25519主機金鑰。這是因為 GitHub 更改了 SSH 中支持的密鑰,並刪除了未加密的 Git 協議。如需有關Ed25519主機金鑰的詳細資訊,請參閱 < 改善 Git 通訊協定安全性 > 的 GitHub部落格文章 GitHub。產生新的Ed25519主機金鑰後,請為安全殼層金鑰建立 Systems Manager SecureString 參數,並使用SecureString參數名稱做為--repo-private-key參數的值。若要取得有關如何建立「Systems Manager」SecureString 參數的更多資訊,請 SecureString 參閱《AWS Systems Manager 使用指南》中的建立參數 (AWS CLI) 或建立 Systems Manager 參數 (主控台)

  • --http-password--repo-private-key參數參考「Systems Manager」SecureString 參數的名稱。--http-username當您執行AWS-ApplyChefRecipes文件時,移轉指令碼會使用這些參數。

  • --http-username參數需要您同時指定--http-password參數的值。

  • --http-password參數需要您同時指定--http-username參數的值。

  • 請勿同時為--http-password和設定值--repo-private-key。提供安全殼層金鑰的 Systems Manager SecureString 參數名稱 (--repo-private-key) 或儲存庫使用者名稱 (--http-username) 和密碼 (--http-password)。