演练:修补 Windows Server AMI - Amazon Web Services Systems Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

演练:修补 Windows Server AMI

这些区域有:AWS-UpdateWindowsAmi运行手册可用于在 Amazon Windows 上自动完成映像维护任务Amazon Machine Image(AMI),而无需使用 JSON 或 YAML 编写运行簿。此运行手册支持 Windows Server 2008 R2 或更高版本。您可以使用AWS-UpdateWindowsAmirunbook 执行以下类型的任务。

  • 安装所有 Windows 更新并升级 Amazon 软件 (默认行为)。

  • 安装特定 Windows 更新并升级 Amazon 软件。

  • 自定义AMI使用您的脚本。

开始前的准备工作

在开始使用 Runbook 之前,为 Automation 配置角色添加iam:PassRole策略,该策略引用您要授予访问权限的实例配置文件的 ARN。(可选)配置 Amazon EventBridge 以实现自动化,Amazon Web Services Systems Manager。有关更多信息,请参阅 设置 Automation。此演练还要求您指定 AWS Identity and Access Management (IAM) 实例配置文件的名称。有关创建 IAM 实例配置文件的更多信息,请参阅为创建 IAM 实例配置文件

注意

对的更新Amazon Web Services Systems ManagerSSM 代理通常会在不同时间向不同区域推广。自定义或更新 AMI 时,请仅使用为您工作所在的区域发布的源 AMI。这将确保您使用该区域发布的最新 SSM Agent 并避免兼容性问题。

这些区域有:AWS-UpdateWindowsAmirunbook 接受以下输入参数。

参数 类型 描述

SourceAmiId

字符串

(必需) 源AMIID。您可以自动引用最新的 Windows ServerAMIID 通过使用 Systems Manager Parameter Store公有参数。有关更多信息,请参阅 。查询最新的 WindowsAMIID 使用Amazon Web Services Systems ManagerParameter Store

IamInstanceProfileName

字符串

(必需)您在中创建的 IAM 实例配置文件角色的名称为创建 IAM 实例配置文件。实例配置文件角色为 Automation 提供在您实例上执行操作的权限,例如运行命令或启动和停止服务。Runbook 仅使用实例配置文件角色的名称。如果您指定 Amazon 资源名称 (ARN),则自动化。

AutomationAssumeRole

字符串

(必需)您在中创建的 IAM 服务角色的名称设置 Automation。服务角色 (也称为代入角色) 为 Automation 提供权限,用于代入您的 IAM 角色和代表您执行操作。例如,服务角色允许 Automation 创建新的AMI运行aws:createImage操作。对于此参数,必须指定完整的 ARN。

TargetAmiName

字符串

(可选)新的AMI创建它后它会被创建。默认名称是系统生成的字符串,其中包括源AMIID 和创建时间和日期。

InstanceType

字符串

(可选) 启动作为工作区主机的实例的类型。实例类型因区域而异。默认类型为 t2.medium。

PreUpdateScript

字符串

(可选) 要在更新AMI。在 Runbook 中或在运行时输入一个脚本作为参数。

PostUpdateScript

字符串

(可选) 要在更新AMI。在 Runbook 中或在运行时输入一个脚本作为参数。

IncludeKbs

字符串

(可选) 指定一个或多个要包括的 Microsoft 知识库 (KB) 文章 ID。可以使用逗号分隔值安装多个 ID。有效格式:KB9876543 或 9876543。

ExcludeKbs

字符串

(可选) 指定一个或多个要排除的 Microsoft 知识库 (KB) 文章 ID。可以使用逗号分隔值排除多个 ID。有效格式:KB9876543 或 9876543。

类别

字符串

(可选) 指定一个或多个更新类别。可以使用逗号分隔值筛选类别。选项:关键更新、安全更新、定义更新、Update Rollup、Service Pack、工具、更新或驱动程序。有效格式包括单个条目,例如:Critical 更新。或者,可以指定逗号分隔列表:关键更新、安全更新、定义更新。

SeverityLevels

字符串

(可选) 指定一个或多个与更新关联的 MSRC 严重性级别。可以使用逗号分隔值筛选严重性级别。选项:关键、重要、低、中或未指定。有效格式包括单个条目,例如:Cretical 或者,可以指定逗号分隔列表:关键、重要、低。

Automation 步骤

这些区域有:AWS-UpdateWindowsAmi默认情况下 Runbook 包括以下步骤。

步骤 1: launchInstance (aws:runInstancesaction)

此步骤以从指定的SourceAmiID

步骤 2:runPreUpdateScript (aws:runCommandaction)

此步骤可让您以字符串形式指定一个在安装更新前运行的脚本。

步骤 3:更新 EC2Config (aws:runCommandaction)

此步骤使用AWS-InstallPowerShellModule运行手册下载Amazon公共 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:runCommandaction)

此步骤通过使用AWS-UpdateSSMAgent运行手册。

步骤 5:updateAWSPVDriver (aws:runCommandaction)

此步骤更新Amazon光伏驱动程序通过使用AWS-ConfigureAWSPackage运行手册。

步骤 6:updateAwsEnaNetworkDriver (aws:runCommandaction)

此步骤更新AmazonENA 网络驱动程序通过使用AWS-ConfigureAWSPackage运行手册。

步骤 7:installWindowsUpdates (aws:runCommandaction)

此步骤将安装 Windows 更新,方法是使用AWS-InstallWindowsUpdates运行手册。默认情况下,Systems Manager 搜索并安装所有缺失的更新。可以通过指定下列参数之一更改默认行为:IncludeKbsExcludeKbsCategoriesSeverityLevels

第 8 步:runPostUpdateScript (aws:runCommandaction)

此步骤可让您以字符串形式指定一个在安装更新后运行的脚本。

第 9 步:runSysprepGeneralize 及 (aws:runCommandaction)

此步骤使用AWS-InstallPowerShellModule运行手册下载Amazon公共 PowerShell 模块。Systems Manager 使用 SHA-256 哈希验证模块的完整性。然后,Systems Manager 使用AmazonEC2Launch (Windows Server 2016) 或 EC2Config (Windows Server 2008 R2 到 2012 R2) 支持的方法。

第 10 步:stopInstance (aws:changeInstanceStateaction)

此步骤停止已更新实例。

第 11 步:createImage (aws:createImageaction)

此步骤将创建一个新的AMI,带有可将其链接到源 ID 和创建时间的描述性名称。例如:“EC2 Automation 在 {{全球: DATE_TIME}}} 从 {SourceAmiId}} 生成了 AMI”,其中 DATE_TIME 和 SourceID 表示 Automation 变量。

第 12 步:TerminateInstanceaws:changeInstanceStateaction)

此步骤通过终止正在运行的实例来清除自动化过程。

输出

此部分可让您将各个步骤的输出或任何参数的值指定为 Automation 输出。默认情况下,输出是已更新 Windows 的 IDAMI由自动化创建。

注意

默认情况下,当 “自动化” 运行AWS-UpdateWindowsAmi运行簿并创建一个临时实例,则系统会使用默认 VPC (172.30.0.0/16)。如果您删除了默认 VPC,会收到以下错误:

VPC not defined 400

要解决此问题,您必须复制AWS-UpdateWindowsAmirunbook 并指定子网 ID。有关更多信息,请参阅 VPC not defined 400

创建经过修补的窗口AMI使用 Automation

  1. 安装和配置Amazon命令行界面 (AmazonCLI),如果尚未执行该操作。

    想要了解有关信息,请参阅安装或升级Amazon命令行工具

  2. 运行以下命令来运行AWS-UpdateWindowsAmi运行手册。在参数部分中,指定AMI源 ID、EC2 实例配置文件角色和您的 Automation 服务角色。下面的示例命令使用最近的 Amazon EC2AMI以最大限度减少需应用的补丁数量。如果您多次运行此命令,则必须为targetAMIname。AMI名称必须是独一无二的。

    aws ssm start-automation-execution --document-name="AWS-UpdateWindowsAmi" --parameters SourceAmiId='ami-0246f4914689c475f',IamInstanceProfileName='ManagedInstanceProfile',AutomationAssumeRole='arn:aws:iam::{{global:ACCOUNT_ID}}:role/AutomationServiceRole'

    该命令将会返回执行 ID。请将该 ID 复制到剪贴板。您将使用该 ID 查看自动化的状态。

    {
        "AutomationExecutionId": "ID"
    }
  3. 要查看自动化,请使用AmazonCLI,运行以下命令:

    aws ssm describe-automation-executions
  4. 要查看有关自动化进度的详细信息,请运行以下命令。

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

根据应用的补丁数量,在该示例自动化中运行的 Windows 修补过程可能需要 30 分钟或更长时间才能完成。