本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
更新 AMIs
下列教學課程說明如何更新 Amazon Machine Image (AMIs) 以包含最新的修補程式。
主題
更新 LinuxAMI (AWS CLI)
本自動 AWS Systems Manager 化逐步解說將說明如何使用 AWS Command Line Interface
(AWS CLI) 和 Systems Manager 工作AWS-UpdateLinuxAmi
流程手冊,使用您指定的最新版套件自動修補 Linux Amazon Machine Image (AMI)。自動化是的一項功能 AWS Systems Manager。AWS-UpdateLinuxAmi
Runbook 也會自動化安裝其他的網站特定套件和組態。你可以使用這個逐步解說來更新各種 Linux 發行版Ubuntu Server,包括 CentOS、RHEL、SLES 或 Amazon Linux。AMIs如需支援的 Linux 版本完整清單,請參閱 Patch Manager 先決條件。
AWS-UpdateLinuxAmi
Runbook 可讓您自動化映像維護任務,不必使用 JSON 或 YAML 撰寫 Runbook。您可以使用 AWS-UpdateLinuxAmi
Runbook 執行以下類型的任務。
-
在 Amazon Linux、、Red Hat Enterprise Linux SLES 或 Cent OS Amazon Machine Image (AMI) 上升級所有分發套件和 Amazon 軟體。Ubuntu Server這是 Runbook 預設行為。
-
安裝 AWS Systems Manager SSM Agent在現有映像上以啟用 Systems Manager 功能,例如使用執行遠端命令, AWS Systems Manager Run Command或使用詳細目錄收集軟體清查。
-
安裝其他軟體套件。
開始之前
在您開始使用 Runbook 之前,請先設定角色,並 EventBridge 針對自動化 (選擇性) 設定角色。如需詳細資訊,請參閱 設定自動化。本逐步解說也要求您指定 AWS Identity and Access Management (IAM) 執行個體設定檔的名稱。如需建立 IAM 執行個體設定檔的詳細資訊,請參閱設定 Systems Manager 所需的執行個體許可。
AWS-UpdateLinuxAmi
Runbook 接受以下的輸入參數。
參數 | 類型 | 描述 |
---|---|---|
SourceAmi身份證 |
字串 |
(必要) 來源 AMI ID。您可以使用 AWS Systems Manager Parameter Store公用參數,自動參考適用AMI於 Linux 的 Amazon EC2 的最新 ID。如需詳細資訊,請參閱使用的方式查詢最新的 Amazon Linux AMI ID AWS Systems ManagerParameter Store |
IamInstanceProfileName |
字串 |
(必要) 您在「設定 Systems Manager 所需的執行個體權限」中建立的 IAM 執行個體設定檔角色名稱。執行個體設定檔角色可讓自動化許可在您的執行個體上執行動作,例如執行命令或啟動和停用服務。Runbook 僅使用執行個體設定檔角色的名稱。 |
AutomationAssume角色 |
字串 |
(必要) 您在 設定自動化 中建立之 IAM 服務角色的名稱。服務角色 (也稱為擔任角色) 會提供自動化許可來擔任您的 IAM 角色並代表您執行動作。例如,在 Runbook 中執行 |
TargetAmi姓名 |
字串 |
(選用) 建立後的新 AMI 之名稱。預設名稱為系統產生的字串,包括來源 AMI ID,以及建立時間和日期。 |
InstanceType |
字串 |
(選用) 做為工作空間主機啟動的執行個體類型。執行個體類型因區域而異。預設類型為 t2.micro。 |
PreUpdate腳本 |
字串 |
(選用) 套用更新前要執行的指令碼之 URL。預設 (\"none\") 為不執行指令碼。 |
PostUpdate腳本 |
字串 |
(選用) 套用套件更新後要執行的指令碼之 URL。預設 (\"none\") 為不執行指令碼。 |
IncludePackages |
字串 |
(選用) 僅更新這些具名的套件。根據預設 (\"all\"),會套用所有可用的更新。 |
ExcludePackages |
字串 |
(選用) 在各種條件下,要保留不更新的套件之名稱。根據預設 (\"none\"),無排除套件。 |
自動化步驟
依預設,AWS-UpdateLinuxAmi
Runbook 包含下列步驟。
- 步驟 1:launchInstance (
aws:runInstances
動作) -
此步驟使用 Amazon Elastic Compute Cloud (Amazon EC2) 使用者資料和 IAM 執行個體設定檔角色啟動執行個體。使用者資料會根據作業系統安裝合適的 SSM Agent。安裝 SSM Agent 可讓您利用 Systems Manager 功能,例如 Run Command、State Manager 和庫存。
- 步驟 2:updateOSSoftware (
aws:runCommand
動作) -
此步驟會在啟動的執行個體上執行以下命令:
-
從 Amazon Simple Storage Service (Amazon S3) 下載更新指令碼。
-
執行選用的更新前指令碼。
-
更新軟體發佈套件和 Amazon 軟體。
-
執行選用的更新後指令碼。
執行日誌存放於 /tmp 資料夾以供使用者日後檢視。
如果您想要升級一組特定的套件,您可以使用
IncludePackages
參數提供清單。提供後,系統會嘗試僅更新這些套件及其相依性。其他更新不會執行。根據預設,未指定包含套件時,程式會更新所有可用的套件。如果您想要排除升級一組特定的套件,您可以使用
ExcludePackages
參數提供清單。若提供,這些套件會維持在目前的版本,獨立於指定的其他任何選項。根據預設,未指定排除套件時,就不會排除任何套件。 -
- 步驟 3:stopInstance 停止 (
aws:changeInstanceState
動作) -
此步驟會停止更新的執行個體。
- 步驟 4:createImage (
aws:createImage
動作) -
此步驟會以連結至來源 ID 和建立時間的描述性名稱建立新的 AMI。例如:「從 {{Id}} 由 EC2 自動化生成的 AMI {{全球:日期 _ 時間}}」,其中 DATE_TIME 和 Source SourceAmi ID 代表自動化變量。
- 步驟 5:terminateInstance (
aws:changeInstanceState
動作) -
此步驟會藉由終止執行中的執行個體來清除自動化。
- 輸出
-
自動化會傳回新的 AMI ID 作為輸出。
注意
根據預設,Automation 執行 AWS-UpdateLinuxAmi
Runbook 時,系統在預設 VPC (172.30.0.0/16) 中建立暫時執行個體。如果刪除預設 VPC,您會收到以下錯誤:
VPC not defined 400
若要解決此問題,您必須複製 AWS-UpdateLinuxAmi
Runbook 並指定子網路 ID。如需詳細資訊,請參閱 VPC 未定義 400。
使用 自動化 建立已修補的 AMI
安裝和配置 AWS Command Line Interface (AWS CLI),如果你還沒有。
如需相關資訊,請參閱安裝或更新最新版本的 AWS CLI。
-
執行下列命令,以執行
AWS-UpdateLinuxAmi
Runbook。將每個範例資源預留位置
取代為您自己的資訊。aws ssm start-automation-execution \ --document-name "AWS-UpdateLinuxAmi" \ --parameters \ SourceAmiId=
AMI ID
, \ IamInstanceProfileName=IAM instance profile
, \ AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole
'命令會傳回執行 ID。複製此 ID 到剪貼簿。您可以使用此 ID 檢視自動化的狀態。
{ "AutomationExecutionId": "
automation execution ID
" } -
若要使用檢視自動化 AWS CLI,請執行下列命令:
aws ssm describe-automation-executions
-
執行以下命令檢視自動化進度的詳細資訊。把
自動化執行 ID
取代為您自己的資訊。aws ssm get-automation-execution --automation-execution-id
automation execution ID
更新程序可能需要 30 分鐘或以上的時間完成。
注意
您也可以在主控台中監控自動化的狀態。在清單中,選擇您剛執行的自動化,接著選擇 Steps (步驟) 標籤。此索引標籤會顯示自動化動作的狀態。
自動化結束後,從已更新的 AMI 啟動測試執行個體以確認變更。
注意
如果自動化中有任何步驟失敗,關於失敗的資訊會列於 Automation Executions (自動化執行清單) 頁面。自動化設計為在成功完成所有任務後終止暫時執行個體。如果有步驟失敗,系統可能不會終止執行個體。所以如果有步驟失敗,請手動終止暫時執行個體。