自动化 Amazon EBS 快照生命周期 - Amazon Elastic Compute Cloud

自动化 Amazon EBS 快照生命周期

您可以使用 Amazon 数据生命周期管理器 来自动创建、保留和删除用于备份 Amazon EBS 卷的快照。当您执行自动快照管理时,它可以帮助您:

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

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

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

结合使用 Amazon CloudWatch Events 和 AWS CloudTrail 的监控功能时,Amazon 数据生命周期管理器 可提供针对 EBS 卷的完整备份解决方案,而不会额外收费。

Amazon 数据生命周期管理器 的工作原理

以下是 Amazon 数据生命周期管理器 的关键要素。

快照

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

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

定位资源标签

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

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

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

快照标签

Amazon 数据生命周期管理器 对通过策略创建的所有快照应用以下标签,以与通过任何其他方法创建的快照区分开来:

  • aws:dlm:lifecycle-policy-id

  • aws:dlm:lifecycle-schedule-name

  • aws:dlm:expirationTime

  • dlm:managed

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

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

Amazon 数据生命周期管理器 用于将卷与策略关联的目标标签可以选择性地应用于策略创建的快照。

生命周期策略

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

  • 资源类型—定义由策略管理的 AWS 资源的类型。使用 VOLUME 创建单个卷的快照,或使用 INSTANCE 从实例的卷创建多卷快照。有关更多信息,请参阅多卷快照

  • 目标标签—指定必须与 EBS 卷或 Amazon EC2 实例关联才能由策略管理的标签。

  • 计划—创建快照的开始时间和时间间隔。第一个快照是由策略在指定的开始时间之后的一小时内创建的。后续快照将在其计划时间的 1 小时内创建。一个策略最多可以有四个计划:一个强制要求的计划和最多三个可选计划。有关更多信息,请参阅政策计划

  • 保留—指定如何保留快照。您可以基于快照的总数或每个快照的存在时间保留快照。

例如,您可以创建一个策略,用于管理具有某个标签(该标签具有 account 键和 finance 值)的所有 EBS 卷,该策略每隔 24 小时在 9:00 UTC 创建一次快照,并保留 5 个最新快照。快照创建将于每天的 9:59 开始。

政策计划

策略计划定义策略创建快照的时间。策略最多可以有四个计划—一个强制要求的计划和最多三个可选计划。

在单个策略中添加多个计划,可让您使用同一策略按不同频率创建快照。例如,您可以创建一个策略来按每日、每周、每月和每年的频率创建快照。这样就无需管理多个策略。

对于每个计划,您可以定义频率、快速快照还原设置、跨区域复制规则和标签。分配给计划的标签将自动分配给触发计划时创建的快照。此外,Amazon Data Lifecycle Manager 还会根据计划的频率自动为每个快照分配系统生成的标签。

每个计划都会根据其频率单独触发。如果同时触发多个计划,Amazon Data Lifecycle Manager 只会创建一个快照,并采用具有最长保留期限的计划的快照保留设置。触发的所有计划的标签都会应用于该快照。

  • 如果为触发的多个计划启用了快速快照还原,则会在所有触发的计划中指定的所有可用区内为该快照启用快速快照还原,并且会为每个可用区使用所触发计划的最长保留期限设置。

  • 如果为触发的多个计划启用了跨区域复制,则该快照会被复制到触发的计划中指定的所有区域,并使用所触发计划的最长保留期限。

Amazon 数据生命周期管理器 的注意事项

您的 AWS 账户具有与 Amazon 数据生命周期管理器 相关的以下配额:

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

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

  • 每个生命周期策略最多可以创建四个计划。

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

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

  • 第一个快照是由策略在指定的开始时间之后的一小时内创建的。后续快照将在其计划时间的 1 小时内创建。

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

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

  • 如果您根据时间修改保留计划以使用新的时间间隔,则新的间隔仅用于新快照。新的计划不会影响该策略创建的现有快照的保留计划。

  • 您无法将策略的保留计划从快照计数更改为每个快照的存在时间。要进行该更改,您必须创建新的策略。

  • 如果您禁用了其保留计划基于每个快照的存在时间的策略,则会无限期保留在禁用该策略时其保留期过期的快照。您必须手动删除这些快照。再次启用该策略时,Amazon 数据生命周期管理器 会在快照保留期过期时继续删除快照。

  • 如果您删除应用基于计数的保留策略的资源,则此策略不再管理以前创建的快照。如果不再需要使用快照,您必须手动删除这些快照。

  • 如果您删除应用基于存在时间的保留策略的资源,则该策略将继续按照定义的计划删除快照,直至最后一个快照。如果不再需要最后一个快照,则必须手动删除该快照。

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

以下注意事项适用于生命周期策略和快速快照还原

  • 即使您删除或禁用生命周期策略,为生命周期策略禁用快速快照还原,或者为可用区禁用快速快照还原,已启用快速快照还原的快照也会保持启用状态。您可以手动为这些快照禁用快速快照还原。

  • 如果您启用快速快照还原,并且超过可启用快速快照还原的最大快照数,Amazon 数据生命周期管理器 将按计划创建快照,但不会为其启用快速快照还原。在删除启用了快速快照还原的快照后,将为 Amazon 数据生命周期管理器 创建的下一个快照启用快速快照还原。

  • 在为快照启用快速快照还原时,每个 TiB 需要 60 分钟来优化快照。我们建议您创建一个计划,以确保在 Amazon 数据生命周期管理器 创建下一个快照之前对每个快照进行完全优化。

  • 对于为特定可用区中快照启用的快速快照还原,您需要按每分钟支付费用。收费按比例计算,最少 1 小时。有关更多信息,请参阅 定价和计费

    注意

    根据生命周期策略的配置,您可以为快速快照还原同时启用多个快照。

先决条件

Amazon 数据生命周期管理器 需要满足以下先决条件。

Amazon 数据生命周期管理器 权限

Amazon 数据生命周期管理器 使用 IAM 角色来获取代表您管理快照所需的权限。在您首次使用 AWS 管理控制台创建生命周期策略时,Amazon 数据生命周期管理器 会创建 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 数据生命周期管理器。

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

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

加密的快照的权限

要在区域之间复制加密的快照,您必须具有从 AWS Key Management Service (AWS KMS) 访问源和目标客户主密钥 (CMK) 的权限。

如果源卷已加密,请确保 AWSDataLifecycleManagerDefaultRole 角色具有使用用于加密卷的 CMK 的权限。如果启用跨区域复制并选择加密复制的快照,请确保 AWSDataLifecycleManagerDefaultRole 角色有权使用加密目标区域中的快照所需的 CMK。有关更多信息,请参阅 AWS Key Management Service Developer Guide 中的管理对 AWS KMS CMK 的访问

使用控制台管理备份

以下示例说明如何使用 Amazon 数据生命周期管理器,通过 AWS 管理控制台来管理 EBS 卷的备份。

创建生命周期策略

使用以下过程创建生命周期策略。

创建生命周期策略

  1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,依次选择 Elastic Block StoreLifecycle Manager,然后选择创建快照生命周期策略

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

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

    • 资源类型 – 要备份的资源的类型。使用 Volume 创建各个卷的快照,或使用 Instance 从实例的卷创建多卷快照。

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

    • Lifecycle policy tags (生命周期策略标签) – 生命周期策略的标签。

  4. 对于 IAM 角色,选择一个有权创建、删除和描述快照以及描述卷的 IAM 角色。AWS 提供一个默认角色 AWSDataLifecycleManagerDefaultRole,您也可以创建自定义 IAM 角色。

  5. 添加策略计划。计划 1 是强制要求的计划。计划 2、3、4 是可选计划。对于每个策略计划,请指定以下信息:

    • Schedule name (计划名称) – 计划的名称。

    • Frequency (频率) – 策略运行之间的间隔。您可以按每日、每周、每月或每年计划配置策略运行。或者,选择自定义 Cron 表达式以指定时间间隔,最多 1 年。有关更多信息,请参阅 Amazon CloudWatch Events 用户指南 中的 Cron 表达式

    • 开始于 hh:mm UTC – 计划开始运行策略的时间。第一次策略运行在计划时间之后的一小时内开始。

    • 保留类型 – 您可以基于快照的总计数或每个快照的存在时间保留快照。对于基于计数的保留,范围是 1 到 1000。在达到最大计数后,将在创建新快照时删除最早的快照。对于基于存在时间的保留,范围是 1 天到 100 年。在每个快照的保留期过期后,将删除它。保留期应大于或等于创建间隔。

      注意

      所有计划必须具有相同的保留类型。您只能为“计划 1”指定保留类型。计划 2、3、4 会继承计划 1 的保留类型。每个计划都可以有自己的保留计数或期限。

    • 标签信息–选择是否将源卷上的所有用户定义标签复制到该策略创建的快照。除了 Amazon 数据生命周期管理器 应用的标签以外,您还可以为快照指定其他标签。如果资源类型为 INSTANCE,则可以选择使用以下变量标签来自动标记快照:instance-idtimestamp。变量标签的值在添加标签时确定。

    • 快速快照还原–选择是否为此策略创建的所有快照启用快速快照还原。如果您启用快速快照还原,则必须选择要在其中启用该功能的可用区。对于为特定可用区中快照启用的快速快照还原,您需要按每分钟支付费用。收费按比例计算,最少 1 小时。您还可以指定可为快速快照还原启用的最大快照数。

    • 启用跨区域复制 – 您可以将每个快照复制到最多三个其他区域。您必须确保没有超过每个区域的并发快照副本数。对于每个区域,您可以选择不同的保留策略,以及是复制所有标签还是不复制任何标签。如果源快照已加密或默认启用加密,则会加密快照副本。如果源快照未加密,您可以启用加密。如果未指定 CMK,则会在每个目标区域中使用 EBS 加密的默认密钥对快照进行加密。如果您为目标区域指定 CMK,则您必须具有对 CMK 的访问权限。

  6. 对于创建后的策略状态,选择启用策略,以在下次计划时间启动策略运行,或者选择禁用策略,以禁止策略运行。

  7. 选择创建策略

查看生命周期策略

使用以下过程查看生命周期策略。

查看生命周期策略

  1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/

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

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

修改生命周期策略

使用以下过程修改生命周期策略。

修改生命周期策略

  1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/

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

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

  4. 选择 Actions (操作),然后选择 Modify Snapshot Lifecycle Policy (修改快照生命周期策略)

  5. 根据需要,修改策略设置。例如,您可以修改计划,添加或删除标签,或者启用或禁用策略。

  6. 选择 Update policy

删除生命周期策略

使用以下过程删除生命周期策略。

注意

您可以仅删除由 Amazon 数据生命周期管理器 创建的快照。

删除生命周期策略

  1. 打开 Amazon EC2 控制台 https://console.aws.amazon.com/ec2/

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

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

  4. 选择 Actions (操作),然后选择 Delete Snapshot Lifecycle Policy (删除快照生命周期策略)

  5. 在提示确认时,选择 Delete Snapshot Lifecycle Policy (删除快照生命周期策略)

使用 AWS CLI 管理备份

以下示例说明如何使用 Amazon 数据生命周期管理器,通过 AWS CLI 来管理 EBS 卷的备份。

创建生命周期策略

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

此示例使用 VOLUME 资源类型,为具有指定目标标签的所有卷创建快照。要为具有指定目标标签的所有实例的所有卷创建快照,请改为使用 INSTANCE 资源类型。该策略包含两个计划。第一个计划在每天 3:00 UTC 创建快照。第二个计划在每周五 17:00 UTC 创建一个周快照。

aws dlm create-lifecycle-policy --description "My volume policy" --state ENABLED --execution-role-arn arn:aws: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 }, { "Name": "WeeklySnapshots", "TagsToAdd": [{ "Key": "type", "Value": "myWeeklySnapshot" }], "CreateRule": { "CronExpression": "cron(0 0 17 ? * FRI *)" }, "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: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: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 命令来删除生命周期策略并释放策略中指定的目标标签以供重复使用。

注意

您可以仅删除由 Amazon 数据生命周期管理器 创建的快照。

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

使用 API 管理备份

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

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

监控快照生命周期

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

控制台和 AWS CLI

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

CloudWatch Events

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

提供的事件如下:

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

  • DLM Policy State Change – 当生命周期策略进入错误状态时,会发出 Amazon 数据生命周期管理器 事件。此事件包含有关导致错误的问题的描述。下面是在 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:dlm:us-east-1:123456789012:policy/policy-0123456789abcdef" ], "detail": { "state": "ERROR", "cause": "Role provided does not have sufficient permissions", "policy_id": "arn:aws: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:dlm:us-east-1:123456789012:policy/policy-0123456789abcdef" ], "detail":{ "state": "ERROR", "cause": "Maximum allowed active snapshot limit exceeded", "policy_id": "arn:aws:dlm:us-east-1:123456789012:policy/policy-0123456789abcdef" } }

AWS CloudTrail

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