更新 Linux AMI
此 Systems Manager Automation 演練會示範如何使用主控台或 AWS CLI 以及 AWS-UpdateLinuxAmi 執行手冊,透過您指定的套件的最新修補程式來更新 Linux AMI。Automation 是 AWS Systems Manager 中的工具。AWS-UpdateLinuxAmi Runbook 也會自動化安裝其他的網站特定套件和組態。您可以使用此演練更新各種 Linux 發行版本,包括 Ubuntu Server、Red Hat Enterprise Linux (RHEL) 或 Amazon Linux AMIs。如需支援的 Linux 版本完整清單,請參閱 Patch Manager 先決條件。
AWS-UpdateLinuxAmi 執行手冊可讓您自動化映像維護任務,而無需撰寫 JSON 或 YAML 格式的執行手冊。您可以使用 AWS-UpdateLinuxAmi Runbook 執行以下類型的任務。
- 
                        在 Amazon Linux、Red Hat Enterprise Linux 或 Ubuntu Server Amazon Machine Image (AMI) 上,升級所有發行版本套件和 Amazon 軟體。這是 Runbook 預設行為。 
- 
                        在現有的映像上安裝 AWS Systems Manager SSM Agent 以啟用 Systems Manager 工具,例如使用 AWS Systems Manager Run Command 的遠端命令執行或使用庫存的軟體庫存收集。 
- 
                        安裝其他軟體套件。 
開始之前
在您開始使用 Runbook 之前,請設定 Automation 的角色和 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 中執行  | 
| 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。例如:「AMI Generated by EC2 Automation on {{global:DATE_TIME}} from {{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
- 開啟位於 AWS Systems Managerhttps://console.aws.amazon.com/systems-manager/ 的主控台。https://console.aws.amazon.com/systems-manager/ 
- 在導覽窗格中,選擇 Automation (自動化)。 
- 
                        選擇 Execute automation (執行自動化)。 
- 
                        在 Automation document (自動化文件) 清單中,選擇 AWS-UpdateLinuxAmi。
- 
                        在 Document details (文件詳細資訊) 部分,確認 Document version (文件版本) 設為 Default version at runtime (執行時間的預設版本)。 
- 
                        選擇下一步。 
- 
                        在 Execution Mode (執行模式) 部分,選擇 Simple execution (簡易執行)。 
- 
                        在 Input parameters (輸入參數) 部分,輸入您在 Before You Begin (開始之前) 部分收集的資訊。 
- 
                        選擇 Execute (執行)。主控台會顯示自動化執行的狀態。 
自動化結束後,從已更新的 AMI 啟動測試執行個體以確認變更。
注意
如果自動化中有任何步驟失敗,關於失敗的資訊會列於 Automation Executions (自動化執行清單) 頁面。自動化設計為在成功完成所有任務後終止暫時執行個體。如果有步驟失敗,系統可能不會終止執行個體。所以如果有步驟失敗,請手動終止暫時執行個體。