更新 Windows Server AMI
使用 AWS-UpdateWindowsAmi
运行手册可以在 Amazon Windows Amazon Machine Image (AMI) 上自动完成映像维护任务,而无需使用 JSON 或 YAML 编写工作流程。本运行手册在 Windows Server 2008 R2 或更高版本中受支持。您可以使用 AWS-UpdateWindowsAmi
运行手册执行以下类型的任务。
-
安装所有 Windows 更新并升级 Amazon 软件 (默认行为)。
-
安装特定 Windows 更新并升级 Amazon 软件。
-
使用您的脚本自定义 AMI。
开始前的准备工作
在开始使用运行手册之前,为自动化配置角色以添加 iam:PassRole
策略,此策略引用要授予其访问权限的实例配置文件的 ARN。(可选)配置适用于自动化 的 Amazon EventBridge,这是 AWS Systems Manager 的一项功能。有关更多信息,请参阅 设置自动化。此演练还要求您指定 AWS Identity and Access Management (IAM) 实例配置文件的名称。有关创建 IAM 实例配置文件的更多信息,请参阅配置 Systems Manager 所需的实例权限。
注意
AWS Systems Manager SSM Agent 的更新通常会在不同时间向不同区域推广。自定义或更新 AMI 时,请仅使用为您工作所在的区域发布的源 AMI。这将确保您使用该区域发布的最新 SSM Agent并避免兼容性问题。
AWS-UpdateWindowsAmi
运行手册接受以下输入参数。
参数 | 类型 | 描述 |
---|---|---|
SourceAmiId |
String |
(必需)源 AMI ID。您可以使用 Systems Manager Parameter Store 公有参数自动引用最新的 Windows Server AMI ID。有关更多信息,请参阅使用 AWS Systems ManagerParameter Store 查询最新的 Windows AMI ID |
SubnetId |
String |
(可选)要在其中启动临时实例的子网。如果您已删除默认 VPC,则必须为此参数指定值。 |
IamInstanceProfileName |
String |
(必需)您在配置 Systems Manager 所需的实例权限中创建的 IAM 实例配置文件角色的名称。实例配置文件角色为自动化提供在您实例上执行操作的权限,例如运行命令或启动和停止服务。运行手册仅使用实例配置文件角色的名称。 |
AutomationAssumeRole |
String |
(必需)您在 设置自动化 中创建的 IAM 服务角色的名称。服务角色(也称为担任角色)为自动化提供权限,用于担任您的 IAM 角色和代表您执行操作。例如,在运行手册中运行 |
TargetAmiName |
String |
(可选)新 AMI 在创建之后的名称。默认名称是系统生成的字符串,其中包括源 AMI ID 以及创建时间和日期。 |
InstanceType |
String |
(可选) 启动作为工作区主机的实例的类型。实例类型因区域而异。默认类型为 t2.medium。 |
PreUpdateScript |
String |
(可选) 要在更新 AMI 之前运行的脚本。在运行手册中或在运行时输入脚本作为参数。 |
PostUpdateScript |
String |
(可选)要在更新 AMI 之后运行的脚本。在运行手册中或在运行时输入脚本作为参数。 |
IncludeKbs |
String |
(可选) 指定一个或多个要包括的 Microsoft 知识库 (KB) 文章 ID。可以使用逗号分隔值安装多个 ID。有效格式:KB9876543 或 9876543。 |
ExcludeKbs |
String |
(可选) 指定一个或多个要排除的 Microsoft 知识库 (KB) 文章 ID。可以使用逗号分隔值排除多个 ID。有效格式:KB9876543 或 9876543。 |
类别 |
String |
(可选) 指定一个或多个更新类别。可以使用逗号分隔值筛选类别。选项:关键更新、安全更新、定义更新、Update Rollup、Service Pack、工具、更新或驱动程序。有效格式包括单个条目,例如:关键更新。或者,可以指定逗号分隔列表:关键更新,安全更新,定义更新。 |
SeverityLevels |
String |
(可选) 指定一个或多个与更新关联的 MSRC 严重性级别。可以使用逗号分隔值筛选严重性级别。选项:关键、重要、低、中或未指定。有效格式包括单个条目,例如:关键。或者,可以指定逗号分隔列表:关键,重要,低。 |
自动化步骤
默认情况下,AWS-UpdateWindowsAmi
运行手册包括以下步骤。
- 步骤 1:launchInstance(
aws:runInstances
操作) -
此步骤以从指定的
SourceAmiID
启动一个具有 IAM 实例配置文件角色的实例。 - 步骤 2:runPreUpdateScript(
aws:runCommand
操作) -
此步骤可让您以字符串形式指定一个在安装更新前运行的脚本。
- 步骤 3:更新 EC2Config(
aws:runCommand
操作) -
此步骤使用
AWS-InstallPowerShellModule
运行手册下载 AWS 共有 PowerShell 模块。Systems Manager 使用 SHA-256 哈希验证模块的完整性。然后,Systems Manager 将检查操作系统,以确定是更新 EC2Config 还是 EC2Launch。EC2Config 通过 Windows Server 2012 R2 在 Windows Server 2008 R2 上运行。EC2Launch 在 Windows Server 2016 上运行。 - 步骤 4:updateSSMAgent(
aws:runCommand
操作) -
此步骤通过使用
AWS-UpdateSSMAgent
运行手册更新 SSM Agent。 - 步骤 5:updateAWSPVDriver(
aws:runCommand
操作) -
此步骤通过使用
AWS-ConfigureAWSPackage
运行手册更新 AWS PV 驱动程序。 - 步骤 6:updateAwsEnaNetworkDriver(
aws:runCommand
操作) -
此步骤通过使用
AWS-ConfigureAWSPackage
运行手册更新 AWS ENA 网络驱动程序。 - 步骤 7:installWindowsUpdates(
aws:runCommand
操作) -
此步骤使用
AWS-InstallWindowsUpdates
运行手册安装 Windows 更新。默认情况下,Systems Manager 搜索并安装任何缺失的更新。可以通过指定下列参数之一更改默认行为:IncludeKbs
、ExcludeKbs
、Categories
或SeverityLevels
。 - 步骤 8:runPostUpdateScript(
aws:runCommand
操作) -
此步骤可让您以字符串形式指定一个在安装更新后运行的脚本。
- 步骤 9:runSysprepGeneralize(
aws:runCommand
操作) -
此步骤使用
AWS-InstallPowerShellModule
运行手册下载 AWS 共有 PowerShell 模块。Systems Manager 使用 SHA-256 哈希验证模块的完整性。然后 Systems Manager 使用 AWS 支持的方法针对 EC2Launch (Windows Server 2016) 或 EC2Config(Windows Server 2008 R2 到 2012 R2)运行 sysprep。 - 步骤 10:stopInstance(
aws:changeInstanceState
操作) -
此步骤停止已更新实例。
- 步骤 11:createImage(
aws:createImage
操作) -
此步骤创建一个新 AMI,带有可将其链接到源 ID 和创建时间的描述性名称。例如:“EC2自动化在 {{global:DATE_TIME}} 从 {{SourceAmiId}} 生成了 AMI”,其中 DATE_TIME 和 SourceID 表示自动化变量。
- 步骤 12:TerminateInstance(
aws:changeInstanceState
操作) -
此步骤通过终止正在运行的实例来清除自动化。
- 输出
-
此部分可让您将各个步骤的输出或任何参数的值指定为自动化输出。默认情况下,输出是由执行创建的已更新 Windows AMI 的 ID。
注意
默认情况下,当自动化运行 AWS-UpdateWindowsAmi
运行手册并创建一个临时实例时,系统会使用默认 VPC (172.30.0.0/16)。如果您删除了默认 VPC,会收到以下错误:
VPC not defined 400
要解决此问题,您必须复制 AWS-UpdateWindowsAmi
运行手册并指定子网 ID。有关更多信息,请参阅 VPC not defined 400。
使用自动化创建经过修补的 Windows AMI
安装并配置 AWS Command Line Interface(AWS CLI)(如果尚未执行该操作)。
有关信息,请参阅安装或更新 AWS CLI 的最新版本。
-
运行以下命令来运行
AWS-UpdateWindowsAmi
运行手册。将每个示例资源占位符
替换为您自己的信息。以下示例命令使用的是最新的 Amazon EC2 AMI,以最大限度减少需应用的补丁数量。如果您多次运行此命令,则必须为targetAMIname
指定唯一的值。AMI 名称必须唯一。aws ssm start-automation-execution \ --document-name="AWS-UpdateWindowsAmi" \ --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
-
要查看有关自动化进程的详细信息,请运行以下命令。
aws ssm get-automation-execution --automation-execution-id
automation execution ID
注意
根据应用的补丁数量,在该示例自动化中运行的 Windows 修补过程可能需要 30 分钟或更长时间才能完成。