

• 2026 年 4 月 30 日之後將不再提供 AWS Systems Manager CloudWatch Dashboard。客戶可以繼續使用 Amazon CloudWatch 主控台來檢視、建立和管理其 Amazon CloudWatch 儀表板，就像現在一樣。如需詳細資訊，請參閱 [Amazon CloudWatch Dashboard 文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch_Dashboards.html)。

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

# 更新 AMIs
<a name="automation-tutorial-update-ami"></a>

下列教學課程說明如何更新 Amazon Machine Image (AMIs) 以包含最新的修補程式。

**Topics**
+ [更新 Linux AMI](automation-tutorial-update-patch-linux-ami.md)
+ [更新 LinuxAMI (AWS CLI)](#update-patch-linux-ami-cli)
+ [更新 Windows Server (AMI)](automation-tutorial-update-patch-windows-ami.md)
+ [AMI 使用自動化更新黃金 AWS Lambda，以及 Parameter Store](automation-tutorial-update-patch-golden-ami.md)
+ [使用 Automation 和 Jenkins 更新 AMIs](automation-tutorial-update-patch-ami-jenkins-integration.md)
+ [更新 Auto Scaling 群組的 AMIs](automation-tutorial-update-patch-windows-ami-autoscaling.md)

## 更新 LinuxAMI (AWS CLI)
<a name="update-patch-linux-ami-cli"></a>

此 AWS Systems Manager 自動化演練說明如何使用 AWS Command Line Interface (AWS CLI) 和 Systems Manager `AWS-UpdateLinuxAmi` 執行手冊，以您指定的最新版本套件自動修補 Linux Amazon Machine Image(AMI)。Automation 是 AWS Systems Manager中的工具。`AWS-UpdateLinuxAmi` Runbook 也會自動化安裝其他的網站特定套件和組態。您可以使用此演練更新各種 Linux 發行版本，包括 Ubuntu Server、Red Hat Enterprise Linux (RHEL) 或 Amazon Linux AMIs。如需支援的 Linux 版本完整清單，請參閱 [Patch Manager 先決條件](patch-manager-prerequisites.md)。

`AWS-UpdateLinuxAmi` Runbook 可讓您自動化映像維護任務，不必使用 JSON 或 YAML 撰寫 Runbook。您可以使用 `AWS-UpdateLinuxAmi` Runbook 執行以下類型的任務。
+ 在 Amazon Linux、RHEL 或 Ubuntu Server Amazon Machine Image (AMI) 上，升級所有發行版本套件和 Amazon 軟體。這是 Runbook 預設行為。
+ 在 AWS Systems Manager SSM Agent現有映像上安裝 以啟用 Systems Manager 功能，例如使用 AWS Systems Manager Run Command 執行遠端命令或使用庫存執行軟體庫存收集。
+ 安裝其他軟體套件。

**開始之前**  
在您開始使用 Runbook 之前，請設定 Automation 的角色和 EventBridge (選用)。如需詳細資訊，請參閱[設定自動化](automation-setup.md)。此演練也需要您指定 AWS Identity and Access Management (IAM) 執行個體描述檔的名稱。如需有關建立 IAM 執行個體設定檔的詳細資訊，請參閱[設定 Systems Manager 所需的執行個體許可](setup-instance-permissions.md)。

`AWS-UpdateLinuxAmi` Runbook 接受以下的輸入參數。


****  

| 參數 | 類型 | 說明 | 
| --- | --- | --- | 
| SourceAmiId | String | (必要) 來源 AMI ID。您可以使用*公*有 AWS Systems Manager Parameter Store參數自動參考 Amazon EC2 AMI for Linux 的最新 ID。如需詳細資訊，請參閱 [Query for the latest Amazon Linux AMI IDs using AWS Systems Manager Parameter Store](https://aws.amazon.com/blogs/compute/query-for-the-latest-amazon-linux-ami-ids-using-aws-systems-manager-parameter-store/)。 | 
| IamInstanceProfileName | String | (必要) 您在[設定 Systems Manager 所需的執行個體許可](setup-instance-permissions.md)中所建立之 IAM 執行個體設定檔角色的名稱。執行個體設定檔角色可讓自動化許可在您的執行個體上執行動作，例如執行命令或啟動和停用服務。Runbook 僅使用執行個體設定檔角色的名稱。 | 
| AutomationAssumeRole | String | (必要) 您在 [設定自動化](automation-setup.md) 中建立之 IAM 服務角色的名稱。服務角色 (也稱為擔任角色) 會提供自動化許可來擔任您的 IAM 角色並代表您執行動作。例如，在 Runbook 中執行 `aws:createImage` 動作時，服務角色會允許自動化建立新的 AMI。針對此參數，必須指定的完整 ARN。 | 
| TargetAmiName | String | (選用) 建立後的新 AMI 之名稱。預設名稱為系統產生的字串，包括來源 AMI ID，以及建立時間和日期。 | 
| InstanceType | String | (選用) 作為工作空間主機啟動的執行個體類型。執行個體類型因區域而異。預設類型為 t2.micro。 | 
| PreUpdateScript | String | (選用) 套用更新前要執行的指令碼之 URL。預設 (\\"none\\") 為不執行指令碼。 | 
| PostUpdateScript | String | (選用) 套用套件更新後要執行的指令碼之 URL。預設 (\\"none\\") 為不執行指令碼。 | 
| IncludePackages | String | (選用) 僅更新這些具名的套件。根據預設 (\\"all\\")，會套用所有可用的更新。 | 
| ExcludePackages | String | (選用) 在各種條件下，要保留不更新的套件之名稱。根據預設 (\\"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。例如：「AMI Generated by EC2 Automation on {{global:DATE\_TIME}} from {{SourceAmiId}}」，其中 DATE\_TIME 和 SourceID 代表自動化變數。

**步驟 5：terminateInstance (`aws:changeInstanceState` 動作) **  
此步驟會藉由終止執行中的執行個體來清除自動化。

**Output**  
自動化會傳回新的 AMI ID 作為輸出。

**注意**  
根據預設，Automation 執行 `AWS-UpdateLinuxAmi` Runbook 時，系統在預設 VPC (172.30.0.0/16) 中建立暫時執行個體。如果刪除預設 VPC，您會收到以下錯誤：  
`VPC not defined 400`  
若要解決此問題，您必須複製 `AWS-UpdateLinuxAmi` Runbook 並指定子網路 ID。如需詳細資訊，請參閱[VPC 未定義 400](automation-troubleshooting.md#automation-trbl-common-vpc)。

**使用 自動化 建立已修補的 AMI**

1. 如果您尚未安裝和設定 AWS Command Line Interface (AWS CLI)。

   如需相關資訊，請參閱[安裝或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

1. 執行下列命令，以執行 `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}}"
   }
   ```

1. 若要使用 檢視自動化 AWS CLI，請執行下列命令：

   ```
   aws ssm describe-automation-executions
   ```

1. 執行以下命令檢視自動化進度的詳細資訊。把{{自動化執行 ID}} 取代為您自己的資訊。

   ```
   aws ssm get-automation-execution --automation-execution-id {{automation execution ID}}
   ```

   更新程序可能需要 30 分鐘或以上的時間完成。
**注意**  
您也可以在主控台中監控自動化的狀態。在清單中，選擇您剛執行的自動化，接著選擇 **Steps (步驟)** 標籤。此索引標籤會顯示自動化動作的狀態。

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

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