Amazon Elastic Compute Cloud
用户指南(适用于 Linux 实例)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

自动化 Amazon EBS 快照生命周期

您可以使用 Amazon 数据生命周期管理器 (Amazon DLM) 来自动创建、保留和删除为备份 Amazon EBS 卷而制作的快照。自动化快照管理可以帮助您:

  • 通过实施定期备份计划来保护重要数据。

  • 按照审计员的要求或内部合规性保留备份。

  • 通过删除过时的备份来降低存储成本。

与 Amazon CloudWatch Events 和 AWS CloudTrail 的监控功能结合使用,Amazon DLM 可为 EBS 卷提供完整备份解决方案,而无需额外费用。

了解 Amazon DLM

下面是您在开始使用 Amazon DLM 前应了解的关键元素。

快照

快照是备份 EBS 卷中的数据的主要方式。为节省存储成本,连续快照为增量快照,只包含自上一个快照以来更改的卷数据。在您删除卷的一系列快照中的一个快照时,只删除该快照独有的数据。将保留卷的其余捕获历史记录。

有关更多信息,请参阅 Amazon EBS 快照

定位资源标签

Amazon DLM 使用资源标签来标识要备份的 EBS 卷。标签是可分配到 AWS 资源(包括 EBS 卷和快照)的可自定义元数据。Amazon DLM 策略(如下所述)使用单个标签定位某个卷用于备份。如果您希望在某个卷上运行多个策略,可以为其分配多个标签。

在标签键中不能使用“\”或“=”字符。

有关更多信息,请参阅 标记您的 Amazon EC2 资源

快照标签

Amazon DLM 对通过策略创建的所有快照应用以下标签,以与通过任何其他方法创建的快照区分开来:

  • aws:dlm:lifecycle-policy-id

  • aws:dlm:lifecycle-schedule-name

还可以在创建时指定要应用于快照的自定义标签。

在标签键中不能使用“\”或“=”字符。

Amazon DLM 用于将卷与策略关联的目标标签可以选择性地应用于策略创建的快照。

生命周期策略

生命周期策略包括以下核心设置:

  • 策略类型 — 定义策略可以管理的有效目标资源类型和操作。如果不存在,则默认为 EBS_SNAPSHOT_MANAGEMENT

  • 资源类型 — 策略管理的 AWS 资源。支持的值为 EBS 卷和 EC2 实例。

  • 目标标签 — 必须将标签与 EBS 卷或 EC2 实例相关联,才能由策略管理。

  • 计划 — 定义创建快照的频率和要保留的快照的最大数量。快照创建在指定的开始时间后的 1 小时内开始。如果创建新快照超出为卷保留的快照的最大数量,则将删除最旧的快照。

以下注意事项适用于生命周期策略:

  • 在您将策略的激活状态设置为已启用后,策略才开始创建快照。您可以在创建时将策略配置为已启用。

  • 策略在指定的开始时间后的 1 个小时内开始创建快照。

  • 如果您通过删除或更改目标标签来修改策略,则具有该标签的 EBS 卷将不再受此策略的影响。

  • 如果您修改策略的计划名称,则在旧计划名称下创建的快照将不再受此策略的影响。

  • 如果删除策略适用的资源,则策略不再管理以前创建的快照。如果不再需要使用快照,您必须手动删除这些快照。

  • 您可以创建多个策略以备份 EBS 卷或 EC2 实例。例如,如果 EBS 卷有两个标签,其中标签 A 是每隔 12 小时创建一次快照的策略 A 的目标,标签 B 是每隔 24 小时创建一次快照的策略 B 的目标,则 Amazon DLM 将根据这两个策略的计划创建快照。

  • 在复制策略创建的快照时,保留计划不会转移到副本。这可确保 Amazon DLM 不会删除应保留较长时间的快照。

例如,您可以创建一个策略,它管理具有标签 account=Finance 的所有 EBS 卷,每隔 24 小时在 9:00 创建一次快照,并保留 5 个最新快照。快照创建会最晚在 0959 开始。

Amazon DLM 权限

Amazon DLM 使用 IAM 角色来获取代表您管理快照所需的权限。在您首次使用 AWS 管理控制台创建生命周期策略时,Amazon DLM 会创建 AWSDataLifecycleManagerDefaultRole 角色。您还可以使用以下 create-default-role 命令创建此角色。

aws dlm create-default-role

或者,您可以在创建生命周期策略时创建具有所需权限的自定义 IAM 角色并选择它。

创建自定义 IAM 角色

  1. 创建具有以下权限的角色。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateSnapshot", "ec2:CreateSnapshots", "ec2:DeleteSnapshot", "ec2:DescribeVolumes", "ec2:DescribeInstances", "ec2:DescribeSnapshots" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*::snapshot/*" } ] }

    有关更多信息,请参阅 IAM 用户指南 中的创建角色

  2. 向角色添加信任关系。

    1. 在 IAM 控制台中,选择角色

    2. 选择您创建的角色,然后选择信任关系

    3. 选择编辑信任关系,添加以下策略,然后选择更新信任策略

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "dlm.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

IAM 用户的权限

IAM 用户必须具有以下权限才能使用 Amazon DLM。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iam:PassRole", "iam:ListRoles"], "Resource": "arn:aws-cn:iam::123456789012:role/AWSDataLifecycleManagerDefaultRole" }, { "Effect": "Allow", "Action": "dlm:*", "Resource": "*" } ] }

有关更多信息,请参阅 IAM 用户指南 中的更改 IAM 用户的权限

限制

您的 AWS 账户存在以下与 Amazon DLM 相关的限制:

  • 您最多可以为每个区域创建 100 个生命周期策略。

  • 您最多可以为每个资源添加 50 个标签。

  • 您可以为每个生命周期策略创建一个计划。

通过控制台使用 Amazon DLM

以下示例说明如何使用 Amazon DLM 执行典型过程来管理您的 EBS 卷的备份。

创建生命周期策略

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,依次选择 Elastic Block Store生命周期管理器创建快照生命周期策略

  3. 根据需要,为您的策略提供以下信息:

    • Description (描述) – 策略的描述。

    • Target with tags (具有标签的目标) – 标识要备份的卷或实例的资源标签。

    • Schedule Name (计划名称) – 备份计划的名称。

    • Create snapshots every n Hours (每隔 n 小时创建快照) – 策略运行之间的小时数。支持的值为 2、3、4、6、8、12 和 24。

    • Snapshot creation start time hh:mm UTC (快照创建开始时间 hh:mm UTC) – 策略运行计划开始的当日时间。策略运行在计划时间后的 1 小时内开始。

    • Retention rule (保留规则) – 每个卷或实例保留的最大快照数。支持的范围为 1 至 1000。在到达限制后,当创建新的快照时,会删除最旧的快照。

    • Copy tags (复制标签) – 将源卷上所有用户定义的标签复制到由此策略创建的卷的快照。

    • Tag created snapshots (标记创建的快照) – 应用于创建的快照的资源标签。这些标签作为 Amazon DLM 应用的标签的补充。您还可以选择变量标签,以使用相应的 instance-id 或 timestamp 自动标记所有快照。

    • IAM role (IAM 角色) – 一个 IAM 角色,具有创建、删除和描述快照以及描述卷的权限。AWS 提供一个默认角色 AWSDataLifecycleManagerDefaultRole,您也可以创建自定义 IAM 角色。

    • Policy status after creation (创建后的策略状态) – 选择 Enable policy (启用策略) 以在下次计划时间启动策略运行,或者选择 Disable policy (禁用策略) 以禁止策略运行。

  4. 选择创建策略

显示生命周期策略

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,依次选择 Elastic Block Store生命周期管理器

  3. 从列表中选择生命周期策略。详细信息选项卡显示有关策略的以下信息:

    • 策略 ID

    • 资源类型

    • 策略类型

    • 创建日期

    • 修改日期

    • 定位资源标签

    • 规则摘要

    • 描述

    • 策略状态

    • 添加到快照的标签

修改生命周期策略

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,依次选择 Elastic Block Store生命周期管理器

  3. 从列表中选择生命周期策略。

  4. 依次选择操作修改策略

  5. 在现有生命周期策略中,您可以修改以下策略值:

    • Description (描述) – 策略的描述。

    • Target with tags (具有标签的目标) – 标识要备份的卷或实例的资源标签。

    • Schedule Name (计划名称) – 备份计划的名称。

    • Create snapshots every n Hours (每隔 n 小时创建快照) – 策略运行之间的小时数。支持的值为 2、3、4、6、8、12 和 24。

    • Snapshot creation start time hh:mm UTC (快照创建开始时间 hh:mm UTC) – 策略运行计划开始的当日时间。策略运行在计划时间后的 1 小时内开始。

    • Retention rule (保留规则) – 每个卷或实例保留的最大快照数。支持的范围为 1 至 1000。在到达限制后,当创建新的快照时,会删除最旧的快照。

    • Copy tags (复制标签) – 将源卷上所有用户定义的标签复制到由此策略创建的卷的快照。

    • Tag created snapshots (标记创建的快照) – 应用于创建的快照的资源标签。这些标签作为 Amazon DLM 应用的标签的补充。您还可以选择变量标签,以使用相应的 instance-id 或 timestamp 自动标记所有快照。

    • IAM role (IAM 角色) – 一个 IAM 角色,具有创建、删除和描述快照以及描述卷的权限。AWS 提供一个默认角色 AWSDataLifecycleManagerDefaultRole,您也可以创建自定义 IAM 角色。

    • Policy status after creation (创建后的策略状态) – 选择 Enable policy (启用策略) 以在下次计划时间启动策略运行,或者选择 Disable policy (禁用策略) 以禁止策略运行。

删除生命周期策略

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,依次选择 Elastic Block Store生命周期管理器

  3. 从列表中选择生命周期策略。

  4. 依次选择操作删除策略

通过命令行使用 Amazon DLM

以下示例说明如何使用 Amazon DLM 执行典型过程来管理您的 EBS 卷的备份。

例 示例:创建生命周期策略

可使用 create-lifecycle-policy 命令创建生命周期策略。为简化语法,此示例引用了包含策略详细信息的 JSON 文件 policyDetails.json

aws dlm create-lifecycle-policy --description "My first policy" --state ENABLED --execution-role-arn arn:aws-cn:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole --policy-details file://policyDetails.json

以下是 policyDetails.json 文件的示例。

{ "ResourceTypes": [ "VOLUME" ], "TargetTags": [ { "Key": "costcenter", "Value": "115" } ], "Schedules":[ { "Name": "DailySnapshots", "TagsToAdd": [ { "Key": "type", "Value": "myDailySnapshot" } ], "CreateRule": { "Interval": 24, "IntervalUnit": "HOURS", "Times": [ "03:00" ] }, "RetainRule": { "Count":5 }, "CopyTags": false } ] }

成功后,此命令将返回新创建的策略的 ID。下面是示例输出。

{ "PolicyId": "policy-0123456789abcdef0" }

例 示例:显示生命周期策略

可使用 get-lifecycle-policy 命令来显示有关生命周期策略的信息。

aws dlm get-lifecycle-policy --policy-id policy-0123456789abcdef0

下面是示例输出。它包括您指定的信息以及 AWS 插入的元数据。

{ "Policy":{ "Description": "My first policy", "DateCreated": "2018-05-15T00:16:21+0000", "State": "ENABLED", "ExecutionRoleArn": "arn:aws-cn:iam::210774411744:role/AWSDataLifecycleManagerDefaultRole", "PolicyId": "policy-0123456789abcdef0", "DateModified": "2018-05-15T00:16:22+0000", "PolicyDetails": { "PolicyType":"EBS_SNAPSHOT_MANAGEMENT", "ResourceTypes": [ "VOLUME" ], "TargetTags": [ { "Value": "115", "Key": "costcenter" } ], "Schedules": [ { "TagsToAdd": [ { "Value": "myDailySnapshot", "Key": "type" } ], "RetainRule": { "Count": 5 }, "CopyTags": false, "CreateRule": { "Interval": 24, "IntervalUnit": "HOURS", "Times": [ "03:00" ] }, "Name": "DailySnapshots" } ] } } }

例 修改生命周期策略

可使用 update-lifecycle-policy 命令来修改生命周期策略中的信息。为简化语法,此示例引用了包含策略详细信息的 JSON 文件 policyDetailsUpdated.json

aws dlm update-lifecycle-policy --state DISABLED --execution-role-arn arn:aws-cn:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole" --policy-details file://policyDetailsUpdated.json

以下是 policyDetailsUpdated.json 文件的示例。

{ "ResourceTypes":[ "VOLUME" ], "TargetTags":[ { "Key": "costcenter", "Value": "120" } ], "Schedules":[ { "Name": "DailySnapshots", "TagsToAdd": [ { "Key": "type", "Value": "myDailySnapshot" } ], "CreateRule": { "Interval": 12, "IntervalUnit": "HOURS", "Times": [ "15:00" ] }, "RetainRule": { "Count" :5 }, "CopyTags": false } ] }

要查看更新后的策略,请使用 get-lifecycle-policy 命令。您可以看到更改了状态、标签的值、快照时间间隔和快照开始时间。

例 示例:删除生命周期策略

可使用 delete-lifecycle-policy 命令来删除生命周期策略并释放策略中指定的目标标签以供重复使用。

aws dlm delete-lifecycle-policy --policy-id policy-0123456789abcdef0

通过 API 使用 Amazon DLM

Amazon 数据生命周期管理器 API 参考提供了 Amazon DLM 查询 API 的各种操作和数据类型的描述和语法。

或者,您可以使用 AWS 开发工具包之一来访问适用于您使用的编程语言或平台的 API。有关更多信息,请参阅 AWS 开发工具包

使用 Amazon DLM 来通过控制台创建和维护多卷快照

您可以使用 AWS 管理控制台、通过 AWS CLI 或通过数据生命周期管理 (DLM) API 创建生命周期策略以自动化多卷快照的创建和删除。

使用控制台自动化多卷快照

  1. 登录 AWS 管理控制台并通过以下网址打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,选择 Elastic Block Store (弹性数据块存储)。然后选择 Lifecycle Manager (生命周期管理器)Create snapshot lifecycle policy (创建快照生命周期策略)

  3. 根据需要,为您的策略提供以下信息:

    • Description (描述) – 策略的描述。

    • Target with tags (具有标签的目标) – 标识要备份的卷或实例的资源标签。

    • Schedule Name (计划名称) – 备份计划的名称。

    • Create snapshots every n Hours (每隔 n 小时创建快照) – 策略运行之间的小时数。支持的值为 2、3、4、6、8、12 和 24。

    • Snapshot creation start time hh:mm UTC (快照创建开始时间 hh:mm UTC) – 策略运行计划开始的当日时间。策略运行在计划时间后的 1 小时内开始。

    • Retention rule (保留规则) – 每个卷或实例保留的最大快照数。支持的范围为 1 至 1000。在到达限制后,当创建新的快照时,会删除最旧的快照。

    • Copy tags (复制标签) – 将源卷上所有用户定义的标签复制到由此策略创建的卷的快照。

    • Tag created snapshots (标记创建的快照) – 应用于创建的快照的资源标签。这些标签作为 Amazon DLM 应用的标签的补充。您还可以选择变量标签,以使用相应的 instance-id 或 timestamp 自动标记所有快照。

    • IAM role (IAM 角色) – 一个 IAM 角色,具有创建、删除和描述快照以及描述卷的权限。AWS 提供一个默认角色 AWSDataLifecycleManagerDefaultRole,您也可以创建自定义 IAM 角色。

    • Policy status after creation (创建后的策略状态) – 选择 Enable policy (启用策略) 以在下次计划时间启动策略运行,或者选择 Disable policy (禁用策略) 以禁止策略运行。

  4. 选择创建策略

使用 Amazon DLM 来通过 CLI 创建和维护多卷快照

以下示例显示如何使用 Amazon DLM 来通过 AWS CLI 自动化多卷快照的创建和删除。

例 示例:创建生命周期策略

可使用 create-lifecycle-policy 命令创建生命周期策略。为简化语法,此示例引用了包含策略详细信息的 JSON 文件 policyDetails.json

aws dlm create-lifecycle-policy --description My multi-volume snapshots policy --state ENABLED --execution-role-arn arn:aws-cn:iam::12345678910:role/AWSDataLifecycleManagerDefaultRole --policy-details file://multi-volume-policy.json

以下是 multi-volume-policy.json 文件的示例。

{ "ResourceTypes": [ "INSTANCE" ], "TargetTags": [ { "Key": "costcenter", "Value": "115" } ], "Schedules":[ { "Name": "DailySnapshots", "TagsToAdd": [ { "Key": "type", "Value": "Daily-Multi-Volume Snapshots" } ], "VariableTags":[ { "Key": "timestamp", "Value": "$(timestamp)" }, { "Key": "instance-id", "Value": "$(instance-id)" }, ], "Interval": 24, "IntervalUnit": "HOURS", "Times": [ "03:00" ] }, "RetainRule": { "Count":5 }, "CopyTags": false } ] "Parameters": { "ExcludeBootVolume": true } }

成功后,此命令将返回新创建的策略的 ID。下面是示例输出。

{ "PolicyId": "policy-0123456789abcdef0" }

监控快照生命周期

您可以使用以下功能来监控快照的生命周期。

控制台和 AWS CLI

您可以使用 Amazon EC2 控制台或 AWS CLI 来查看生命周期策略。策略创建的每个快照均具有时间戳以及与策略相关的标签。您可以使用标签来筛选快照以验证是否按预期创建备份。有关使用控制台查看生命周期策略的信息,请参阅显示生命周期策略。有关使用 CLI 显示生命周期策略相关信息的信息,请参阅示例:显示生命周期策略

CloudWatch Events

Amazon EBS 和 Amazon DLM 发出与生命周期策略操作相关的事件。您可以使用 AWS Lambda 和 Amazon CloudWatch Events 以编程方式处理事件通知。有关更多信息,请参阅 Amazon CloudWatch Events 用户指南

提供的事件如下:

  • createSnapshot – 当 CreateSnapshot 操作成功或失败时,会发出 Amazon EBS 事件。有关更多信息,请参阅Amazon EBS 的 Amazon CloudWatch Events

  • DLM Policy State Change – 当生命周期策略进入错误状态时,会发出 Amazon DLM 事件。此事件包含有关导致错误的问题的描述。下面是在 IAM 角色授予的权限不足时发出的事件的示例:

    { "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "DLM Policy State Change", "source": "aws.dlm", "account": "123456789012", "time": "2018-05-25T13:12:22Z", "region": "us-east-1", "resources": [ "arn:aws-cn:dlm:us-east-1:123456789012:policy/policy-0123456789abcdef" ], "detail": { "state": "ERROR", "cause": "Role provided does not have sufficient permissions", "policy_id": "arn:aws-cn:dlm:us-east-1:123456789012:policy/policy-0123456789abcdef" } }

    下面是在超过限制时发出的事件的示例:

    { "version": "0", "id": "01234567-0123-0123-0123-0123456789ab", "detail-type": "DLM Policy State Change", "source": "aws.dlm", "account": "123456789012", "time": "2018-05-25T13:12:22Z", "region": "us-east-1", "resources": [ "arn:aws-cn:dlm:us-east-1:123456789012:policy/policy-0123456789abcdef" ], "detail":{ "state": "ERROR", "cause": "Maximum allowed active snapshot limit exceeded", "policy_id": "arn:aws-cn:dlm:us-east-1:123456789012:policy/policy-0123456789abcdef" } }

AWS CloudTrail

使用 AWS CloudTrail,您可以跟踪用户活动和 API 使用率来证明符合内部策略和监管标准。有关更多信息,请参阅 AWS CloudTrail User Guide

AWS CloudFormation

使用 AWS CloudFormation 部署资源堆栈时,您可在 AWS CloudFormation 模板中包括 Amazon DLM 策略。有关更多信息,请参阅 Amazon 数据生命周期管理器 资源类型参考