AWS Systems Manager
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

使用 Run Command 为 EBS 卷拍摄启用 VSS 的快照

使用 Run Command,您可以为附加到 Amazon EC2 Windows 实例的所有 Amazon Elastic Block Store (Amazon EBS) 卷拍摄应用程序一致性快照。快照过程使用 Windows 卷影复制服务 (VSS) 对 VSS 感知应用程序进行映像级备份,包括这些应用程序和磁盘之间的待处理事务中的数据。此外,当需要备份所有已连接的卷时,无需关闭实例或断开与它们的连接。

使用启用 VSS 的 EBS 快照不会产生额外费用。您只需为备份过程创建的 EBS 快照付费。有关更多信息,请参阅如何计算我的 EBS 快照账单?

如何使用

下面介绍了拍摄启用 VSS 的应用程序一致性 EBS 快照的过程。

  1. 您可以验证和配置 Systems Manager 先决条件。

  2. 可以输入 AWSEC2-CreateVssSnapshot SSM 文档的参数并使用 Run Command 执行本文档。您无法为特定卷创建启用 VSS 的 EBS 快照。但是,您可以指定参数以便从备份过程中排除启动卷。

  3. 您的实例上的 VSS 代理会协调正在运行的应用程序的所有正在进行的 I/O 操作。

  4. 系统会刷新所有 I/O 缓冲区并临时暂停所有 I/O 操作。暂停最多持续 10 秒钟。

  5. 在暂停期间,系统会为附加到实例的所有卷创建快照。

  6. 暂停解除,I/O 恢复操作。

  7. 系统将所有新建快照添加到 EBS 快照列表。系统会为此过程成功创建的所有启用 VSS 的 EBS 快照添加 AppConsistent:true 标签。此标签有助于将此过程创建的快照与其他过程创建的快照区分开来。如果系统遇到错误,此过程创建的快照则不会包含 AppConsistent:true 标签。

  8. 在需要从快照还原的情况下,您可以使用从快照创建卷的标准 EBS 过程进行还原,也可以使用示例脚本将所有卷还原到实例 (本部分稍后将进行介绍)。

开始前的准备工作

在使用 Run Command 创建启用 VSS 的 EBS 快照之前,请检查以下要求和限制,并完成要求的任务。

  • 运行 Windows Server 2008 R2 或更高版本的实例可支持启用 VSS 的 EBS 快照。(当前不支持 Windows Server 2008 R2 Core。)验证您的实例是否满足 Amazon EC2 Windows 的所有要求。有关更多信息,请参阅 设置 AWS Systems Manager

  • 更新您的实例以使用 SSM 代理 版本 2.2.58.0 或更高版本。如果您使用的是 SSM 代理 的较旧版本,可以使用 Run Command 来进行更新。有关更多信息,请参阅 示例:更新 SSM 代理

  • Systems Manager 需要在您的实例上执行操作的权限。您必须为每个实例配置适用于 Systems Manager 的 AWS Identity and Access Management (IAM) 实例配置文件角色。有关更多信息,请参阅 配置对 Systems Manager 的访问权限

  • Systems Manager 需要创建和标记启用 VSS 的 EBS 快照的权限。您可以配置启用这些权限的 IAM 角色。您必须为每个实例配置用于创建和标记快照的角色。有关更多信息,请参阅设置任务中的为启用 VSS 的 EBS 快照创建 IAM 角色

    注意

    如果您不希望向您的实例分配快照角色,可以使用 Run Command 和预定义的 AWSEC2-ManageVssIO SSM 文档来临时暂停 I/O,创建启用 VSS 的 EBS 快照,并重新启动 I/O。此过程在执行命令的用户上下文中运行。如果用户具有足够的权限来创建和标记快照,那么 Systems Manager 可以创建和标记启用 VSS 的 EBS 快照,而实例上无需更多 IAM 快照角色。仍然必须为实例配置实例配置文件角色。有关更多信息,请参阅 通过使用 AWSEC2-ManageVssIO SSM 文档 (高级) 创建启用 VSS 的 EBS 快照

  • Systems Manager 需要在您的实例上安装 VSS 组件。如果您需要安装必需的 VSS 组件,则可以下载适用于 Systems Manager 的 VSS 程序包并在您的实例上运行。如果您计划使用自己的 VSS (BYOL) 的 Microsoft VSS (BYOL) 许可,仍然需要安装适用于 Systems Manager 的 VSS 组件。有关更多信息,请参阅设置任务中的下载并安装适用于 Systems Manager 的 VSS 组件

为启用 VSS 的 EBS 快照创建 IAM 角色

此部分包括创建 IAM 策略的步骤以及一个用于创建 IAM 角色的独立步骤,该 IAM 角色使用您在第一步中创建的策略。该策略使 Systems Manager 能够创建快照、标记快照,并将设备 ID 等元数据附加到系统创建的默认快照标签。

为启用 VSS 的快照创建 IAM 策略

  1. Open the IAM console at https://console.amazonaws.cn/iam/.

  2. 在导航窗格中选择 Policies,然后选择 Create policy

  3. 创建策略页面上,选择 JSON 选项卡,然后复制以下 JSON 策略并粘贴到文本框中。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*::snapshot/*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:CreateSnapshot" ], "Resource": "*" } ] }
  4. 查看策略页面上,在策略名称字段中键入名称,然后选择创建策略。系统将返回 IAM 控制台。

使用以下过程为启用了 VSS 的快照创建 IAM 角色。此角色包括适用于 Amazon EC2 和 Systems Manager 的策略。

为启用 VSS 的 EBS 快照创建 IAM 角色

  1. 在导航窗格中,选择 Roles,然后选择 Create Role

  2. Select type of trusted entity 页面上的 AWS Service 下,选择 EC2

  3. 选择您的使用案例部分,选择 EC2,然后选择下一步:权限

  4. Attach permissions policy 页面中,选择您刚刚创建的策略,然后选择 Next: Review

  5. Review 页面上,在 Role name 框中键入名称,然后键入描述。

  6. 选择 Create role。系统将让您返回到 Roles 页。

  7. 选择您刚刚创建的角色。角色的摘要页面打开。

  8. 选择 Attach policy

  9. 搜索并选择 AmazonEC2RoleforSSM

  10. 选择 Attach policy

  11. 将此角色附加到要为其创建启用 VSS 的 EBS 快照的实例。有关更多信息,请参阅 Amazon EC2 用户指南 中的将 IAM 角色附加到实例

下载并安装适用于 Systems Manager 的 VSS 组件

Systems Manager 需要在您的实例上安装 VSS 组件。使用以下程序配置 状态管理器 关联,该关联可通过使用 AwsVssComponents 程序包自动下载并安装组件。当 AWS 发布新版本的程序包时,状态管理器 关联将将自动下载并安装该程序包。该程序包由两个组件构成:VSS 请求程序和 VSS 提供程序。系统将这些组件复制到实例上的某个目录,然后将提供程序 DLL 注册为 VSS 提供程序。

如果您不希望 Systems Manager 在此程序包的新版本可用时自动下载并安装该程序包,可以使用 Run Command 和 AWS-ConfigureAWSPackage SSM 文档在实例上安装该程序包,如本部分中稍后所述。

创建可自动下载并安装 AwsVssComponents 程序包 () 的 状态管理器 关联

  1. https://console.www.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

  2. 在导航窗格中,选择 状态管理器

    -或者-

    如果 AWS Systems Manager 主页首先打开,请选择菜单图标 ( ) 以打开导航窗格,然后选择 状态管理器

  3. 选择创建关联

  4. (可选) 在名称字段中,键入一个描述性名称。

  5. 命令文档列表中,选择 AWS-ConfigureAWSPackage

  6. 参数部分的操作菜单中选择安装

  7. 名称字段中,键入 AwsVssComponents

  8. 版本字段中,验证是否自动填充了最新

  9. Targets 部分中,通过手动指定标签或选择实例来标识您要运行此操作的实例。

    注意

    如果选择手动选择实例,而列表中不包含您预期看到的实例,请参阅我的实例在哪里?中的故障排除提示。

  10. 指定计划部分,选择一个选项。

  11. Output options 部分中,如果您要将命令输出保存到文件,请选择 Write command output to an Amazon S3 bucket。在框中键入存储桶和前缀 (文件夹) 名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限是分配给实例的实例配置文件的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅 配置对 Systems Manager 的访问权限

  12. 选择 Create Association,然后选择 Close。系统将尝试在实例上创建关联并立即应用状态。关联状态显示 Pending

  13. Association 页面的右角,选择刷新按钮。如果您在一个或多个 EC2 Windows 实例上创建关联,状态将更改为 Success。如果没有为 Systems Manager 正确配置实例,状态将显示为失败

  14. 如果状态为失败,请验证 SSM 代理 是否在实例上运行,并验证实例是配置了适用于 Systems Manager 的 IAM 角色。有关更多信息,请参阅 Systems Manager 先决条件

使用 AWS CLI 安装 VSS 程序包

使用以下过程用 Run Command 从 AWS CLI 下载 AwsVssComponents 程序包并在您的实例上进行安装。该程序包由两个组件构成:VSS 请求程序和 VSS 提供程序。系统将这些组件复制到实例上的某个目录,然后将提供程序 DLL 注册为 VSS 提供程序。

使用 AWS CLI 安装 VSS 程序包

  1. 打开 AWS CLI 并运行以下命令指定您的凭证和区域。您必须在 Amazon EC2 中具有管理员权限,或者您必须在 IAM 中被授予相应权限。有关更多信息,请参阅 Systems Manager 先决条件

    aws configure

    系统将提示您指定以下内容。

    AWS Access Key ID [None]: key_name AWS Secret Access Key [None]: key_name Default region name [None]: region Default output format [None]: ENTER
  2. 执行以下命令下载并安装适用于 Systems Manager 的 VSS 必需组件。

    aws ssm send-command --document-name "AWS-ConfigureAWSPackage" --instance-ids "i-12345678" --parameters '{"action":["Install"],"name":["AwsVssComponents"]}'

使用 Tools for Windows PowerShell 安装 VSS 程序包

使用以下过程用 Run Command 从 Tools for Windows PowerShell 下载 AwsVssComponents 程序包并在您的实例上进行安装。该程序包由两个组件构成:VSS 请求程序和 VSS 提供程序。系统将这些组件复制到实例上的某个目录,然后将提供程序 DLL 注册为 VSS 提供程序。

使用 AWS Tools for Windows PowerShell 安装 VSS 程序包

  1. 打开 AWS Tools for Windows PowerShell 并执行以下命令指定您的凭证。您必须在 Amazon EC2 中具有管理员权限,或者您必须在 IAM 中被授予相应权限。有关更多信息,请参阅 Systems Manager 先决条件

    Set-AWSCredentials –AccessKey key_name –SecretKey key_name
  2. 执行以下命令为 PowerShell 会话设置区域。该示例使用 us-east-2 区域。

    Set-DefaultAWSRegion -Region us-east-2
  3. 执行以下命令下载并安装适用于 Systems Manager 的 VSS 必需组件。

    Send-SSMCommand -DocumentName AWS-ConfigureAWSPackage -InstanceId "$instance"-Parameter @{'action'='Install';'name'='AwsVssComponents'}

创建启用 VSS 的 EBS 快照

本部分包括通过使用 Amazon EC2 控制台、AWS CLI 和 Tools for Windows PowerShell 创建启用 VSS 的 EBS 快照的步骤。

使用 控制台创建启用 VSS 的 EBS 快照

使用控制台创建启用 VSS 的 EBS 快照 ()

  1. https://console.www.amazonaws.cn/systems-manager/ 上打开 AWS Systems Manager 控制台。

  2. 在导航窗格中,选择 Run Command

    -或者-

    如果 AWS Systems Manager 主页首先打开,请选择菜单图标 ( ) 以打开导航窗格,然后选择 Run Command

  3. 选择 Run a Command

  4. 命令文档列表中,选择 AWSEC2-CreateVssSnapshot

  5. Targets 部分中,通过手动指定标签或选择实例来标识您要运行此操作的实例。

    注意

    如果选择手动选择实例,而列表中不包含您预期看到的实例,请参阅我的实例在哪里?中的故障排除提示。

  6. 命令参数部分中:

    1. 排除启动卷列表中选择一个选项。使用此参数从备份过程中排除启动卷。

    2. Description 字段中,键入描述。此描述适用于此过程 (可选但建议使用) 创建的任何快照。

    3. 标签字段中,为要应用于此过程创建的所有快照的标签键入键和值。标签可以帮助您找到、管理和从快照列表还原卷。默认情况下,系统用Name键填充标签参数。对于此密钥的值,指定要应用于此过程创建的快照的名称。如果您要指定更多标签,请使用分号分隔标签。例如, Key=Environment,Value=Test;Key=User,Value=TestUser1.

      此参数是可选的,但是我们建议您标记快照。默认情况下,系统使用设备 ID 和 AppConsistent 标记快照 (用于表示成功的启用 VSS 的应用程序一致性 EBS 快照)。

  7. Other parameters 中:

    • Comment 框中,键入有关此命令的信息。

    • Timeout (seconds) 中,指定整个命令执行失败之前系统要等待的秒数。

  8. (可选) 在 Rate control 中:

    • Concurrency 中,指定要同时对其运行此命令的实例的数量或百分比。

      注意

      如果通过选择 Amazon EC2 标签选择了目标,但不确定有多少个实例使用所选标签,则可以通过指定百分比来限制可同时运行此文档的实例的数量。

    • Error threshold 中,指定此命令在一定数量或百分比的实例上失败后何时停止在其他实例上运行它。例如,如果您指定 3 个错误,Systems Manager 将在收到第 4 个错误时停止发送命令。仍在处理命令的实例也可能发送错误。

  9. Output options 部分中,如果您要将命令输出保存到文件,请选择 Write command output to an Amazon S3 bucket。在框中键入存储桶和前缀 (文件夹) 名称。

    注意

    授予将数据写入 S3 存储桶的能力的 S3 权限是分配给实例的实例配置文件的权限,而不是执行此任务的 IAM 用户的权限。有关更多信息,请参阅 配置对 Systems Manager 的访问权限

  10. SNS Notifications 部分中,如果您希望发送有关命令执行状态的通知,请选中 Enable SNS notifications 复选框。

    有关为 Run Command 配置 Amazon SNS 通知的更多信息,请参阅为 Run Command 配置 Amazon SNS 通知

  11. 选择 Run

    如果成功,则该命令用新快照填充 EBS 快照列表。您可以通过搜索指定的标签或搜索 AppConsistent 在 EBS 快照列表中查找这些快照。如果命令执行失败,请查看 Systems Manager 命令输出,了解执行失败的详细原因。如果命令成功完成,但特定卷备份失败,您可以在 EBS 卷列表中排查失败的原因。

    如果命令失败并且您使用 Systems Manager 和 VPC 端点,请确保您配置了 com.amazonaws.region.ec2 终端节点。未定义 EC2 终端节点时,枚举所附加 EBS 卷的调用将失败,这会导致 Systems Manager 命令失败。有关使用 Systems Manager 设置 VPC 端点的更多信息,请参阅设置 Systems Manager 的 VPC 端点

    注意

    您可以通过创建使用 AWSEC2-CreateVssSnapshot SSM 文档的维护时段任务自动执行备份。有关更多信息,请参阅 使用Maintenance Windows

使用 AWS CLI 创建启用 VSS 的 EBS 快照

使用以下过程来利用 AWS CLI 创建启用 VSS 的 EBS 快照。执行此命令时,您可以指定以下参数:

  • 实例 (必需):指定一个或多个 Amazon EC2 Windows 实例。您可以手动指定实例,也可以指定标签。

  • 描述 (可选):指定关于此备份的详细信息。

  • 标签 (可选):指定要分配给快照的键值标签对。标签可以帮助您找到、管理和从快照列表还原卷。默认情况下,系统用Name键填充标签参数。对于此密钥的值,指定要应用于此过程创建的快照的名称。您还可以使用以下格式向此列表中添加自定义标签:Key=Environment,Value=Test;Key=User,Value=TestUser1

    此参数是可选的,但是我们建议您标记快照。默认情况下,系统使用设备 ID 和 AppConsistent 标记快照 (用于表示成功的启用 VSS 的应用程序一致性 EBS 快照)。

  • 排除启动卷 (可选):使用此参数从备份过程中排除启动卷。

使用 AWS CLI 创建启用 VSS 的 EBS 快照

  1. 打开 AWS CLI 并运行以下命令指定您的凭证和区域。您必须在 Amazon EC2 中具有管理员权限,或者您必须在 IAM 中被授予相应权限。有关更多信息,请参阅 Systems Manager 先决条件

    aws configure

    系统将提示您指定以下内容。

    AWS Access Key ID [None]: key_name AWS Secret Access Key [None]: key_name Default region name [None]: region Default output format [None]: ENTER
  2. 执行以下命令创建启用 VSS 的 EBS 快照。

    aws ssm send-command --document-name "AWSEC2-CreateVssSnapshot" --instance-ids "i-12345678" --parameters '{"ExcludeBootVolume":["False"],"description":["Description"],"tags":["Key=key_name,Value=tag_value"]}'

如果成功,则该命令用新快照填充 EBS 快照列表。您可以通过搜索指定的标签或搜索 AppConsistent 在 EBS 快照列表中查找这些快照。如果命令执行失败,请查看命令输出,了解执行失败的详细原因。

您可以通过创建使用 AWSEC2-CreateVssSnapshot SSM 文档的维护时段任务自动执行备份。有关更多信息,请参阅 使用Maintenance Windows

使用 AWS Tools for Windows PowerShell 创建启用 VSS 的 EBS 快照

使用以下过程来利用 AWS Tools for Windows PowerShell 创建启用 VSS 的 EBS 快照。执行此命令时,您可以指定以下参数:

  • 实例 (必需):指定一个或多个 Amazon EC2 Windows 实例。您可以手动指定实例,也可以指定标签。

  • 描述 (可选):指定关于此备份的详细信息。

  • 标签 (可选):指定要分配给快照的键值标签对。标签可以帮助您找到、管理和从快照列表还原卷。默认情况下,系统用Name键填充标签参数。对于此密钥的值,指定要应用于此过程创建的快照的名称。您还可以使用以下格式向此列表中添加自定义标签:Key=Environment,Value=Test;Key=User,Value=TestUser1

    此参数是可选的,但是我们建议您标记快照。默认情况下,系统使用设备 ID 和 AppConsistent 标记快照 (用于表示成功的启用 VSS 的应用程序一致性 EBS 快照)。

  • 排除启动卷 (可选):使用此参数从备份过程中排除启动卷。

使用 AWS Tools for Windows PowerShell 创建启用 VSS 的 EBS 快照

  1. 打开 AWS Tools for Windows PowerShell 并执行以下命令指定您的凭证。您必须在 Amazon EC2 中具有管理员权限,或者您必须在 IAM 中被授予相应权限。有关更多信息,请参阅 Systems Manager 先决条件

    Set-AWSCredentials –AccessKey key_name –SecretKey key_name
  2. 执行以下命令为 PowerShell 会话设置区域。该示例使用 us-east-2 区域。

    Set-DefaultAWSRegion -Region us-east-2
  3. 执行以下命令创建启用 VSS 的 EBS 快照。

    Send-SSMCommand -DocumentName AWSEC2-CreateVssSnapshot -InstanceId "$instance" -Parameter @{'ExcludeBootVolume'='False';'description'='a_description' ;'tags'='Key=key_name,Value=tag_value'}

如果成功,则该命令用新快照填充 EBS 快照列表。您可以通过搜索指定的标签或搜索 AppConsistent 在 EBS 快照列表中查找这些快照。如果命令执行失败,请查看命令输出,了解执行失败的详细原因。如果命令成功完成,但特定卷备份失败,您可以在 EBS 快照列表中排查失败的原因。

您可以通过创建使用 AWSEC2-CreateVssSnapshot SSM 文档的维护时段任务自动执行备份。有关更多信息,请参阅 使用Maintenance Windows

通过使用 AWSEC2-ManageVssIO SSM 文档 (高级) 创建启用 VSS 的 EBS 快照

您可以使用以下脚本和预定义的 AWSEC2-ManageVssIO SSM 文档来临时暂停 I/O,创建启用 VSS 的 EBS 快照,并重新启动 I/O。此过程在执行命令的用户环境中运行。如果用户具有足够的权限来创建和标记快照,那么 Systems Manager 可以创建和标记启用 VSS 的 EBS 快照,而实例上无需更多 IAM 快照角色。

相比之下,AWSEC2-CreateVssSnapshot 文档需要您向要为其创建 EBS 快照的每个实例分配 IAM 快照角色。如果您出于策略或合规性原因不希望向您的实例提供其他 IAM 权限,则可以使用以下脚本。

开始前的准备工作

请注意有关该过程的以下重要详细信息:

  • 此过程使用一条 PowerShell 脚本 (CreateVssSnapshotAdvancedScript.ps1),为您指定的实例上的所有卷 (根卷除外) 拍摄快照。如果您需要为根卷拍摄快照,则必须使用 AWSEC2-CreateVssSnapshot SSM 文档。

  • 该脚本会调用 AWSEC2-ManageVssIO 文档两次。第一次将 Action 参数设置为 Freeze,这会暂停实例上的所有 I/O。第二次将 Action 参数设置为 Thaw,这会强制恢复 I/O。

  • 请勿在未使用 CreateVssSnapshotAdvancedScript.ps1 脚本的情况下尝试使用 AWSEC2-ManageVssIO 文档。VSS 中的限制要求调用 FreezeThaw 操作相隔不超过十秒钟,在不使用脚本的情况下手动调用这些操作会导致错误。

通过使用 AWSEC2-ManageVssIO SSM 文档创建启用 VSS 的 EBS 快照

  1. 打开 AWS Tools for Windows PowerShell 并执行以下命令指定您的凭证。您必须在 Amazon EC2 中具有管理员权限,或者您必须在 IAM 中被授予相应权限。有关更多信息,请参阅 Systems Manager 先决条件

    Set-AWSCredentials –AccessKey key_name –SecretKey key_name
  2. 执行以下命令为 PowerShell 会话设置区域。该示例使用 us-east-2 区域。

    Set-DefaultAWSRegion -Region us-east-2
  3. 下载 CreateVssSnapshotAdvancedScript.zip 文件并提取文件内容。

  4. 在简单文本编辑器中打开脚本,并在脚本底部编辑示例调用,然后运行该调用。

如果成功,则该命令用新快照填充 EBS 快照列表。您可以通过搜索指定的标签或搜索 AppConsistent 在 EBS 快照列表中查找这些快照。如果命令执行失败,请查看命令输出,了解执行失败的详细原因。如果命令成功完成,但特定卷备份失败,您可以在 EBS 卷列表中排查失败的原因。

从启用 VSS 的 EBS 快照还原卷

您可以使用 RestoreVssSnapshotSampleScript.ps1 脚本从启用 VSS 的 EBS 快照还原实例上的卷。此脚本执行以下任务:

  • 停止实例

  • 从实例中删除所有现有驱动器 (如果已排除启动卷,则启动卷除外)

  • 从快照创建新卷

  • 通过在快照上使用设备 ID 标签将卷附加到实例

  • 重新启动实例

重要

以下脚本将断开附加到实例的所有卷,然后从快照创建新卷。确保已正确备份实例。不会删除旧卷。如果需要,您可以编辑脚本来删除旧卷。

从启用 VSS 的 EBS 快照还原卷

  1. 打开 AWS Tools for Windows PowerShell 并执行以下命令指定您的凭证。您必须在 Amazon EC2 中具有管理员权限,或者您必须在 IAM 中被授予相应权限。有关更多信息,请参阅 Systems Manager 先决条件

    Set-AWSCredentials –AccessKey key_name –SecretKey key_name
  2. 执行以下命令为 PowerShell 会话设置区域。该示例使用 us-east-2 区域。

    Set-DefaultAWSRegion -Region us-east-2
  3. 下载 RestoreVssSnapshotSampleScript.zip 文件并提取文件内容。

  4. 在简单文本编辑器中打开脚本,并在脚本底部编辑示例调用,然后运行该调用。