自动化 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

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

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

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

生命周期策略

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

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

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

  • 计划 - 创建快照的开始时间和间隔。

  • 保留 - 您可以基于快照的总计数或每个快照的存在时间保留快照。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    注意

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

以下注意事项适用于生命周期策略和启用多重挂载的卷:

  • 在为多卷快照创建基于实例标签的生命周期策略时,Amazon 数据生命周期管理器 为每个附加的实例启动卷的快照。使用时间戳标签以标识从附加的实例创建的时间一致快照集。

先决条件

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 (生命周期管理器),然后选择 Create snapshot lifecycle policy (创建快照生命周期策略)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  4. 选择创建策略

查看生命周期策略

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

查看生命周期策略

  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

删除生命周期策略

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

删除生命周期策略

  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 资源类型。

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 } ] }

成功后,此命令将返回新创建的策略的 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 命令来删除生命周期策略并释放策略中指定的目标标签以供重复使用。

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