为 EBS-backed AMI 创建 Amazon Data Lifecycle Manager 自定义策略 - Amazon EBS

为 EBS-backed AMI 创建 Amazon Data Lifecycle Manager 自定义策略

以下程序说明了如何使用 Amazon Data Lifecycle Manager 来自动执行 EBS 支持的 AMI 生命周期。

创建 AMI 生命周期策略

使用以下程序之一创建 AMI 生命周期策略。

Console
创建 AMI 策略
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,依次选择 Elastic Block StoreLifecycle Manager (生命周期管理器),然后选择 Create lifecycle policy (创建生命周期策略)。

  3. 选择策略类型页面,选择 EBS 支持的 AMI 策略,然后选择下一步

  4. 目标资源部分,对于目标资源标签,选择标识要备份的卷或实例的资源标签。策略只备份具有指定标签键和值对的资源。

  5. 对于 Description (描述),输入策略的简短描述。

  6. 对于 IAM 角色,选择一个有权管理 AMI 和快照以及描述实例的 IAM 角色。要使用 Amazon Data Lifecycle Manager 提供的默认角色,请选择默认角色。或者,要使用您之前创建的自定义 IAM 角色,请选择选择其他角色,然后选择要使用的角色。

  7. 对于 Policy tags (策略标签),选择要应用于生命周期策略的标签。您可以使用这些标签对策略进行标识和分类。

  8. 对于创建后的策略状态,选择启用策略,以在下次计划时间启动策略运行,或者选择禁用策略,以禁止策略运行。如果您现在不启用该策略,则该策略仅在创建后手动启用之后开始创建 AMI。

  9. 实例重启部分中,指明是否在创建 AMI 之前重启实例。为了防止目标实例重启,请选择。选择可能会导致数据一致性问题。要在创建 AMI 之前重启实例,请选择。选择此选项可确保数据一致性,但可能导致多个目标实例同时重新启动。

  10. 选择下一步

  11. Configure schedule (配置计划) 页面配置策略计划。一个策略最多可以有四个计划。计划 1 是强制要求的计划。计划 2、3、4 是可选计划。对于您添加的每个策略计划,请执行以下操作:

    1. 计划详细信息部分中,执行以下操作:

      1. 对于计划名称,请指定计划的描述性名称。

      2. 频率和相关字段中配置策略运行之间的间隔。

        您可以按每日、每周、每月或每年计划配置策略运行。或者,选择自定义 cron 表达式以指定不超过一年的间隔时间。有关更多信息,请参阅 Amazon CloudWatch Events 用户指南 中的 Cron 表达式

      3. 对于开始时间,请指定策略开始运行策略的时间。第一次策略运行在计划时间之后的一小时内开始。您必须输入 hh:mm UTC 格式的时间。

      4. 对于保留类型,请指定计划创建的 AMI 的保留策略。

        您可以根据其总计数或存在时间保留 AMI。

        对于基于计数的保留,范围为 11000。在达到最大计数后,将在创建新 AMI 时注销最早 AMI。

        对于基于存在时间的保留,范围是 1 天到 100 年。在每个 AMI 的保留期限过期后,会将其注销。

        注意

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

    2. 配置 AMI 标签。

      请在 Tagging (标记) 部分执行以下操作:

      1. 要将所有用户定义的标签从源实例复制到计划创建的 AMI,请选择从源中复制标签

      2. 默认情况下,计划创建的 AMI 会自动标记为源实例的 ID。要防止发生此自动标记,请在变量标签中,删除 instance-id:$(instance-id) 平铺。

      3. 要指定分配给由该计划创建的 AMI 的其他标签,请选择添加标签

    3. 配置 AMI 弃用。

      要在不应再使用AMI时将其弃用,请在 AMI deprecation(AMI 弃用)部分选择 Enable AMI deprecation for this schedule(为此计划启用 AMI 弃用),然后指定 AMI 弃用规则。AMI 弃用规则指定何时弃用 AMI。

      如果计划使用基于计数的 AMI 保留,您必须指定要弃用的最早 AMI 的数量。弃用计数必须小于或等于计划的 AMI 保留计数,并且不能大于 1000。例如,如果计划配置为最多保留 5 个 AMI,则可以将计划配置为弃用最多 5 个最早的 AMI。

      如果计划使用基于存在时间的 AMI 保留,则必须指定弃用 AMI 的期限。弃用计数必须小于或等于计划的 AMI 保留期限,并且不能超过 10 年(120 个月、520 周或 3650 天)。例如,如果计划配置为将 AMI 保留 10 天,则可以将计划配置为在创建后最多 10 天的期限后弃用 AMI。

    4. 配置跨区域复制。

      要将计划创建的 AMI 复制到其他区域,请在跨区域复制部分中选择启用跨区域复制。您可以将 AMI 复制到账户中最多三个其他区域。您必须为每个目标区域指定单独的跨区域复制规则。

      对于每个目标地区,您可以指定以下内容:

      • AMI 副本的保留策略。保留期限过期后,将自动取消注册目标区域中的副本。

      • AMI 副本的加密状态。如果源 AMI 已加密或预设情况下启用加密,则会始终加密复制的 AMI。如果源 AMI 未加密,并且预设情况下禁用加密,则您可以选择启用加密。如果未指定 KMS 密钥,则会在每个目标区域中使用 EBS 加密的默认 KMS 密钥 对 AMI 进行加密。如果您为目标区域指定 KMS 密钥,则选定的 IAM 角色必须具有对 KMS 密钥 的访问权限。

      • AMI 副本的弃用规则。当弃用期限过期时,将自动弃用 AMI 副本。弃用期限必须小于或等于副本保留期限,并且不能超过 10 年。

      • 是从源 AMI 复制所有标签还是不复制标签。

      注意

      请勿超过每个区域的并发 AMI 副本数。

    5. 要添加其他计划,请选择位于页面顶部的 Add another schedule (添加其他计划)。每个其他计划请按照本主题之前所述填写字段。

    6. 添加所需计划之后,请选择查看策略

  12. 查看策略摘要,然后选择创建策略

    注意

    如果发生 Role with name AWSDataLifecycleManagerDefaultRoleForAMIManagement already exists 错误,请参阅 排查 Amazon Data Lifecycle Manager 问题 来了解更多信息。

Command line

可使用 create-lifecycle-policy 命令创建 AMI 生命周期策略。对于 PolicyType,请指定 IMAGE_MANAGEMENT

注意

为简化语法,以下示例使用包含策略详细信息的 JSON 文件 policyDetails.json

示例 1:基于存在时间的保留和 AMI 弃用

此示例创建的 AMI 生命周期策略可在不重新启动目标实例的情况下创建标签键 purpose 的值为 production 的所有实例的 AMI。该策略包括一个每天可在 UTC 01:00 创建 AMI 的计划。该策略保留 AMI 2 天,并在 1 天后弃用。还会将标签从源实例复制到其创建的 AMI。

aws dlm create-lifecycle-policy \ --description "My AMI policy" \ --state ENABLED \ --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRoleForAMIManagement \ --policy-details file://policyDetails.json

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

{ "PolicyType": "IMAGE_MANAGEMENT", "ResourceTypes": [ "INSTANCE" ], "TargetTags": [{ "Key": "purpose", "Value": "production" }], "Schedules": [{ "Name": "DailyAMIs", "TagsToAdd": [{ "Key": "type", "Value": "myDailyAMI" }], "CreateRule": { "Interval": 24, "IntervalUnit": "HOURS", "Times": [ "01:00" ] }, RetainRule":{ "Interval" : 2, "IntervalUnit" : "DAYS" }, DeprecateRule": { "Interval" : 1, "IntervalUnit" : "DAYS" }, "CopyTags": true } ], "Parameters" : { "NoReboot":true } }

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

{ "PolicyId": "policy-9876543210abcdef0" }
示例 2:基于计数的保留和使用跨区域复制的 AMI 弃用

此示例创建的 AMI 生命周期策略可创建标签键 purpose 的值为 production 的所有实例的 AMI,并重新启动目标实例。该策略包括一个可在 UTC 17:30 起每 6 小时创建 AMI 的计划。该策略保留 3 AMI 并自动弃用 2 最早的 AMI。它还具有跨区域复制规则,该规则会将 AMI 复制到 us-east-1,保留 2 AMI 副本,并自动弃用最早的 AMI。

aws dlm create-lifecycle-policy \ --description "My AMI policy" \ --state ENABLED \ --execution-role-arn arn:aws:iam::12345678910:role/AWSDataLifecycleManagerDefaultRoleForAMIManagement \ --policy-details file://policyDetails.json

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

{ "PolicyType": "IMAGE_MANAGEMENT", "ResourceTypes" : [ "INSTANCE" ], "TargetTags": [{ "Key":"purpose", "Value":"production" }], "Parameters" : { "NoReboot": true }, "Schedules" : [{ "Name" : "Schedule1", "CopyTags": true, "CreateRule" : { "Interval": 6, "IntervalUnit": "HOURS", "Times" : ["17:30"] }, "RetainRule":{ "Count" : 3 }, "DeprecateRule":{ "Count" : 2 }, "CrossRegionCopyRules": [{ "TargetRegion": "us-east-1", "Encrypted": true, "RetainRule":{ "IntervalUnit": "DAYS", "Interval": 2 }, "DeprecateRule":{ "IntervalUnit": "DAYS", "Interval": 1 }, "CopyTags": true }] }] }

AMI 生命周期策略的注意事项

创建 AMI 生命周期策略时应注意以下一般注意事项

  • AMI 生命周期策略仅针对与策略位于同一区域的实例。

  • 第一个 AMI 创建操作将在指定开始时间之后的一小时内启动。后续 AMI 创建操作将在计划时间的一小时内开始。

  • 当 Amazon Data Lifecycle Manager 注销 AMI 时,它会自动删除其支持的快照。

  • 目标资源标签区分大小写。

  • 如果从策略所针对的实例中删除目标标签,则 Amazon Data Lifecycle Manager 不再管理标准中的现有 AMI;如不再需要,您必须手动将其删除。

  • 您可以创建多个策略来备份实例。例如,假设一个实例有两个标签,其中标签 A 是每 12 小时创建一个 AMI 的策略 A 的目标,标签 B 是每 24 小时创建一个 AMI 的策略 B 的目标,则 Amazon Data Lifecycle Manager 将根据这两个策略的计划创建 AMI。或者,您可以通过创建包含多个计划的单个策略来实现相同的结果。例如,您可以创建仅针对标签 A 的单个策略,并指定两个计划,以分别用于每 12 小时和每 24 小时一次的策略。

  • 在下次运行策略时,备份中将自动包含在创建策略后挂载到目标实例的新卷。策略运行时挂载到实例的所有卷都包括在内。

  • 如果您创建了具有基于 cron 的自定义计划的策略,并且配置为仅创建一个 AMI,则该策略不会在达到保留阈值时自动注销该 AMI。如果不再需要该 AMI,则必须手动将其注销。

  • 如果您创建基于存在时间的策略,其保留期短于创建频率,Amazon Data Lifecycle Manager 将始终保留最后一个 AMI,直到创建下一个 AMI。例如,如果基于存在时间的策略每月创建一个 AMI,保留期为七天,则 Amazon Data Lifecycle Manager 会将每个 AMI 保留一个月,即使保留期为七天。

  • 对于基于计数的策略,Amazon Data Lifecycle Manager 在尝试根据保留策略取消注册最旧的 AMI 之前,始终根据创建频率创建 AMI。

  • 成功取消注册 AMI 并删除其关联的备份快照可能需要几小时。如果 Amazon Data Lifecycle Manager 在之前创建的 AMI 成功取消注册之前创建了下一个 AMI,则您可以临时保留一些大于保留次数的 AMI。

终止策略针对的实例时应注意以下注意事项:

  • 如果您终止某个策略按照基于计数的保留计划针对的实例,则该策略将不再管理以前从已终止的实例创建的 AMI。如果不再需要较早版本的 AMI,您必须手动将其注销。

  • 如果您终止某个策略按照基于存在时间的保留计划针对的实例,则该策略将继续按照原定计划取消注册之前从已终止的实例创建的 AMI,直至(但不包括)最后一个 AMI。如果不再需要最后一个 AMI,则必须手动将其注销。

AMI 策略和 AMI 弃用应注意以下事项:

  • 如果您针对具有基于计数的保留的计划增加 AMI 弃用计数,则更改将应用于该计划创建的所有 AMI(现有 AMI 和新 AMI)。

  • 如果您针对具有基于存在时间的保留的计划增加 AMI 弃用期限,则更改仅应用于新 AMI。现有 AMI 不受影响。

  • 如果您从计划中删除 AMI 弃用规则,则 Amazon Data Lifecycle Manager 将不会取消该计划之前弃用的 AMI 弃用。

  • 如果您要减少计划的 AMI 弃用计数或期限,则 Amazon Data Lifecycle Manager 将不会取消该计划之前弃用的 AMI 弃用。

  • 如果您手动弃用由 AMI 策略创建的 AMI,则 Amazon Data Lifecycle Manager 将不会覆盖弃用操作。

  • 如果您手动取消之前已被 AMI 策略弃用的 AMI 的弃用,则 Amazon Data Lifecycle Manager 将不会覆盖取消操作。

  • 如果 AMI 由多个冲突的计划创建,并且其中一个或多个计划没有 AMI 弃用规则,则 Amazon Data Lifecycle Manager 将不会弃用该 AMI。

  • 如果 AMI 由多个相互冲突的计划创建,并且其中所有计划都有 AMI 弃用规则,则 Amazon Data Lifecycle Manager 将会使用导致最新弃用日期的弃用规则。

以下注意事项适用于 AMI 策略和回收站

  • 如果 Amazon Data Lifecycle Manager 注销 AMI 并在达到策略的保留阈值时将其发送到回收站,并且您从回收站手动还原 AMI,则必须在不再需要该 AMI 时手动注销 AMI。Amazon Data Lifecycle Manager 将不再管理该 AMI。

  • 如果您手动注销由策略创建的 AMI,并且该 AMI 在达到策略的保留阈值时位于回收站中,则 Amazon Data Lifecycle Manager 将不会注销该 AMI。当 AMI 在回收站中时,Amazon Data Lifecycle Manager 不管理 AMI。

    如果在达到策略的保留阈值之前从回收站还原了 AMI,则 Amazon Data Lifecycle Manager 将在达到策略的保留阈值时注销 AMI。

    如果在达到策略的保留阈值之后从回收站还原了 AMI,则 Amazon Data Lifecycle Manager 将不再注销 AMI。如果不再需要 AMI,则必须手动将其删除。

以下注意事项适用于处于错误状态的 AMI 策略:

  • 对于具有基于存在时间的保留计划的策略,则设置为在策略处于 error 状态时过期的 AMI 将无限期保留。您必须手动取消注册 AMI。重新启用该策略时,Amazon Data Lifecycle Manager 会在其保留期限到期时恢复取消注册 AMI。

  • 对于具有基于计数的保留计划的策略,策略会在其处于 error 状态时停止创建和取消注册 AMI。当您重新启用该策略时,Amazon Data Lifecycle Manager 将恢复创建 AMI,并在达到保留阈值时恢复取消注册 AMI。

以下注意事项适用于 AMI 策略和禁用 AMI

  • 如果您禁用了 Amazon Data Lifecycle Manager 创建的 AMI,并且在达到其保留阈值时该 AMI 被禁用,则 Amazon Data Lifecycle Manager 将注销该 AMI 并删除其关联的快照。

  • 如果您禁用了 Amazon Data Lifecycle Manager 创建的 AMI,并手动归档了其关联的快照,并且这些快照在达到保留阈值时处于已归档状态,则 Amazon Data Lifecycle Manager 将不会删除这些快照,也不会再对其进行管理。

以下注意事项适用于 AMI 策略和 AMI 取消注册保护

  • 如果您手动为由 Amazon Data Lifecycle Manager 创建的 AMI 启用取消注册保护,并且在达到 AMI 保留阈值时该保护仍在启用,则 Amazon Data Lifecycle Manager 将不再管理该 AMI。如果不再需要 AMI,则必须手动取消注册并删除其底层快照。

其他资源

有关更多信息,请参阅 AWS 存储博客文章 Automating Amazon EBS snapshot and AMI management using Amazon Data Lifecycle Manager(使用 Amazon Data Lifecycle Manager 实现 Amazon EBS 快照和 AMI 管理的自动化)。