更新 AMIs - AWS Systems Manager

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

更新 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 接受以下的輸入參數。

參數 類型 描述

SourceAmiId

字串

(必要) 來源 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 僅使用執行個體設定檔角色的名稱。

AutomationAssumeRole

字串

(必要) 您在 設定自動化 中建立之 IAM 服務角色的名稱。服務角色 (也稱為擔任角色) 會提供自動化許可來擔任您的 IAM 角色並代表您執行動作。例如,在 Runbook 中執行 aws:createImage 動作時,服務角色會允許自動化建立新的 AMI。針對此參數,必須指定的完整 ARN。

TargetAmiName

字串

(選用) 建立後的新 AMI 之名稱。預設名稱為系統產生的字串,包括來源 AMI ID,以及建立時間和日期。

InstanceType

字串

(選用) 做為工作空間主機啟動的執行個體類型。執行個體類型因區域而異。預設類型為 t2.micro。

PreUpdateScript

字串

(選用) 套用更新前要執行的指令碼之 URL。預設 (\"none\") 為不執行指令碼。

PostUpdateScript

字串

(選用) 套用套件更新後要執行的指令碼之 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。例如:「由 EC2 自動化生成的 AMI {{全球:日期 _ 時間}} 從 {{}SourceAmiId}」,其中 DATE_TIME 和 SourceID 代表自動化變量。

步驟 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
  1. 安裝和配置 AWS Command Line Interface (AWS CLI),如果你還沒有。

    如需相關資訊,請參閱安裝或更新最新版本的 AWS CLI

  2. 執行下列命令,以執行 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" }
  3. 若要使用檢視自動化 AWS CLI,請執行下列命令:

    aws ssm describe-automation-executions
  4. 執行以下命令檢視自動化進度的詳細資訊。把自動化執行 ID 取代為您自己的資訊。

    aws ssm get-automation-execution --automation-execution-id automation execution ID

    更新程序可能需要 30 分鐘或以上的時間完成。

    注意

    您也可以在主控台中監控自動化的狀態。在清單中,選擇您剛執行的自動化,接著選擇 Steps (步驟) 標籤。此索引標籤會顯示自動化動作的狀態。

自動化結束後,從已更新的 AMI 啟動測試執行個體以確認變更。

注意

如果自動化中有任何步驟失敗,關於失敗的資訊會列於 Automation Executions (自動化執行清單) 頁面。自動化設計為在成功完成所有任務後終止暫時執行個體。如果有步驟失敗,系統可能不會終止執行個體。所以如果有步驟失敗,請手動終止暫時執行個體。