更新 Linux AMI - AWS Systems Manager

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

更新 Linux AMI

此 Systems Manager Automation 演練會示範如何使用主控台或 AWS CLI 以及 AWS-UpdateLinuxAmi 執行手冊,透過您指定的套件的最新修補程式來更新 Linux AMI。自動化是 AWS Systems Manager 的功能。AWS-UpdateLinuxAmi Runbook 也會自動化安裝其他的網站特定套件和組態。你可以使用這個逐步解說來更新各種 Linux 發行版Ubuntu Server,包括 CentOS、RHEL、SLES 或 Amazon Linux。AMIs如需支援的 Linux 版本完整清單,請參閱 Patch Manager 先決條件

AWS-UpdateLinuxAmi 執行手冊可讓您自動化映像維護任務,而無需撰寫 JSON 或 YAML 格式的執行手冊。您可以使用 AWS-UpdateLinuxAmi Runbook 執行以下類型的任務。

  • 在 Amazon Linux、Red Hat Enterprise Linux、Ubuntu Server、SUSE Linux Enterprise Server 或 CentOS Amazon Machine Image (AMI) 上,升級所有發行版本套件和 Amazon 軟體。這是 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。

IamInstanceProfileName

字串

(必要) 您在設定 Systems Manager 的執行個體許可中所建立之 IAM 執行個體設定檔角色的名稱。執行個體設定檔角色可讓自動化許可在您的執行個體上執行動作,例如執行命令或啟動和停用服務。Runbook 僅使用執行個體設定檔角色的名稱。如果您指定 Amazon Resource Name (ARN),自動化會失敗。

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 執行個體設定檔角色啟動執行個體。Userdata 會根據作業系統安裝合適的 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

使用 Automation (AWS Systems Manager) 建立已修補的 AMI
  1. 開啟主 AWS Systems Manager 控台,網址為 https://console.aws.amazon.com/systems-manager/

  2. 在導覽窗格中,選擇 Automation (自動化)。

    -或-

    如果 AWS Systems Manager 首頁先開啟,請選擇功能表圖示 ( 
    The menu icon
  ) 以開啟導覽窗格,然後選擇 [自動化]。

  3. 選擇 Execute automation (執行自動化)

  4. Automation document (自動化文件) 清單中,選擇 AWS-UpdateLinuxAmi

  5. Document details (文件詳細資訊) 部分,確認 Document version (文件版本) 設為 Default version at runtime (執行時間的預設版本)

  6. 選擇下一步

  7. Execution Mode (執行模式) 部分,選擇 Simple execution (簡易執行)

  8. Input parameters (輸入參數) 部分,輸入您在 Before You Begin (開始之前) 部分收集的資訊。

  9. 選擇 Execute (執行)。主控台會顯示自動化執行的狀態。

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

注意

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