本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AMI | 建立
根據 AMS 帳戶中現有的獨立 EC2 執行個體建立 Amazon Machine Image (AMI)。在執行此變更類型之前,執行個體必須處於停止狀態。
完整分類:部署 | 進階堆疊元件 | AMI | 建立
變更類型詳細資訊
變更類型 ID |
ct-3rqqu43krekby |
目前版本 |
2.0 |
預期的執行持續時間 |
360 分鐘 |
AWS 核准 |
必要 |
客戶核准 |
非必要 |
執行模式 |
自動化 |
其他資訊
建立 AMI
以下顯示 AMS 主控台中的此變更類型。
重要
開始之前,請準備將用於建立 AMI 的 EC2 執行個體。如果沒有適當的準備,建立 AMI RFC 可能會被拒絕或失敗。如需有關準備執行個體以成功建立 AMI 的資訊,請參閱本教學課程中包含的指示。
運作方式:
導覽至建立 RFC 頁面:在 AMS 主控台的左側導覽窗格中,按一下 RFCs以開啟 RFCs清單頁面,然後按一下建立 RFC。
在預設瀏覽變更類型檢視中選擇熱門的變更類型 (CT),或在依類別選擇檢視中選擇 CT。
依變更類型瀏覽:您可以在快速建立區域中按一下熱門的 CT,以立即開啟執行 RFC 頁面。請注意,您無法透過快速建立選擇較舊的 CT 版本。
若要排序 CTs,請使用卡片或資料表檢視中的所有變更類型區域。在任一檢視中,選取 CT,然後按一下建立 RFC 以開啟執行 RFC 頁面。如果適用,建立較舊版本選項會顯示在建立 RFC 按鈕旁。
依類別選擇:選取類別、子類別、項目和操作,如果適用,CT 詳細資訊方塊會開啟,其中包含使用較舊版本建立的選項。按一下建立 RFC 以開啟執行 RFC 頁面。
在執行 RFC 頁面上,開啟 CT 名稱區域以查看 CT 詳細資訊方塊。需要主旨 (如果您在瀏覽變更類型檢視中選擇 CT,則會為您填入)。開啟其他組態區域以新增 RFC 的相關資訊。
在執行組態區域中,使用可用的下拉式清單或輸入必要參數的值。若要設定選用的執行參數,請開啟其他組態區域。
完成後,請按一下執行。如果沒有錯誤,RFC 成功建立的頁面會顯示已提交的 RFC 詳細資訊,以及初始的執行輸出。
開啟執行參數區域以查看您提交的組態。重新整理頁面以更新 RFC 執行狀態。或者,取消 RFC 或使用頁面頂端的選項建立 RFC 的副本。
運作方式:
使用內嵌建立 (您發出包含所有 RFC 和執行參數的
create-rfc命令) 或範本建立 (您建立兩個 JSON 檔案,一個用於 RFC 參數,另一個用於執行參數),並使用兩個檔案作為輸入發出create-rfc命令。此處說明這兩種方法。使用傳回的 RFC ID 提交 RFC:
aws amscm submit-rfc --rfc-id命令。ID監控 RFC:
aws amscm get-rfc --rfc-id命令。ID
若要檢查變更類型版本,請使用下列命令:
aws amscm list-change-type-version-summaries --filter Attribute=ChangeTypeId,Value=CT_ID
注意
您可以將任何CreateRfc參數與任何 RFC 搭配使用,無論它們是否為變更類型結構描述的一部分。例如,若要在 RFC 狀態變更時取得通知,請將此行新增至請求的 --notification "{\"Email\": {\"EmailRecipients\" : [\"email@example.com\"]}}" RFC 參數部分 (而非執行參數)。如需所有 CreateRfc 參數的清單,請參閱 AMS 變更管理 API 參考。
內嵌建立:
使用內嵌提供的執行參數發出建立 RFC 命令 (在內嵌提供執行參數時逸出引號),然後提交傳回的 RFC ID。例如,您可以將內容取代為如下內容:
aws --profile saml --region us-east-1 amscm create-rfc --change-type-id "ct-3rqqu43krekby" --change-type-version "2.0" --title "AMI-Create-IC" --execution-parameters "{\"AMIName\":\"MyAmi\",\"VpcId\":\"VPC_ID\",\"EC2InstanceId\":\"INSTANCE_ID\"}"
範本建立:
將此變更類型的執行參數 JSON 結構描述輸出至檔案;此範例會將其命名為 CreateAmiParams.json:
aws amscm get-change-type-version --change-type-id "ct-3rqqu43krekby" --query "ChangeTypeVersion.ExecutionInputSchema" --output text > CreateAmiParams.json修改並儲存執行參數 CreateAmiParams.json 檔案。例如,您可以將內容取代為如下內容:
{ "AMIName": "My-AMI", "InstanceId": "EC2_INSTANCE_ID" }將 RFC 範本 JSON 檔案輸出到目前資料夾中的檔案;此範例將其命名為 CreateAmiRfc.json:
aws amscm create-rfc --generate-cli-skeleton > CreateAmiRfc.json修改並儲存 CreateAmiRfc.json 檔案。例如,您可以將內容取代為如下內容:
{ "ChangeTypeId": "ct-3rqqu43krekby", "ChangeTypeVersion": "2.0", "Title": "AMI-Create-RFC" }建立 RFC,指定 CreateAmiRfc 檔案和 CreateAmiParams 檔案:
aws amscm create-rfc --cli-input-json file://CreateAmiRfc.json --execution-parameters file://CreateAmiParams.json您會在回應中收到新 RFC 的 ID,並且可以使用它來提交和監控 RFC。在您提交之前,RFC 會保持在編輯狀態,不會啟動。
注意
建立自訂 AMI 之後,您可以向 AMS 提交服務請求,讓現有的 EC2 Auto Scaling 群組使用新的 AMI。如需建立服務請求的相關資訊,請參閱服務請求範例。
重要
開始之前,請準備將用於建立 AMI 的 EC2 執行個體。如果沒有適當的準備,建立 AMI RFC 可能會被拒絕或失敗。
若要避免從新 AMI 建立的執行個體發生身分驗證問題,請在套用自訂變更之後,以及在呼叫建立 AMI CT 之前,在執行個體上執行這些系統命令。
重要
如果指定的執行個體未停止並與目前的網域分開,AMI 建立 RFC 會失敗。依照說明準備執行個體。
如需詳細資訊,請參閱使用 Sysprep 建立標準 Amazon Machine Image。
您可以訂閱 AMS SNS AMI 通知主題,以便在部署感興趣的新 AMS AMIs 時收到提醒。如需詳細資訊,請參閱 AMS AMI Notification Service。
建立 AMI 的 Linux 準備
下載並執行下列指令碼,以準備建立 AMI 的執行個體。您必須以根使用者身分執行此指令碼。
curl https://amazon-ams-us-east-1.s3.amazonaws.com/latest/linux/prepare_instance_for_ami_and_shutdown.sh -o ./prepare_instance_for_ami_and_shutdown.sh chmod 744 prepare_instance_for_ami_and_shutdown.sh ./prepare_instance_for_ami_and_shutdown.sh
注意:上述指令碼會在執行個體上執行關機,連線的使用者會從工作階段登出。
AMI Create 的 Windows 準備
Windows Powershell (以管理員身分執行):
Invoke-AMSSysprep
執行個體會停止,且任何連線的使用者都會從目前的 Windows RDP 工作階段登出。
如需建立 AWS Windows AMIs的詳細資訊,請參閱建立自訂 Windows AMI。
AMI Create 的 UserData
如果您需要在 AMI 的下一次開機時執行使用者資料,請確定下列事項:
HKEY_LOCAL_MACHINE\SOFTWARE\Amazon\ManagedServices\RunUserDataViaAMSBootModule存在登錄機碼;如果該機碼不存在,則下次不會執行使用者資料。若要在下一次開機時執行使用者資料:
在管理員權限下啟動 Windows PowerShell (以管理員身分執行)
執行以下命令:
Install-AMSDependencies
如需失敗 AMI 建立 RFCs的相關資訊,請參閱 RFC 失敗疑難排解。
執行輸入參數
如需執行輸入參數的詳細資訊,請參閱 變更類型 ct-3rqqu43krekby 的結構描述。
範例:必要參數
{ "InstanceId": "i-01234567890abcdef", "AmiName": "MyAMI" }
範例:所有參數
{ "InstanceId": "i-12345678", "AmiName": "MyAMI", "AmiTags": [ { "Key": "foo", "Value": "bar" }, { "Key": "testkey", "Value": "testvalue" } ] }