自动化 AMI 生命周期 - Amazon Elastic Compute Cloud

自动化 AMI 生命周期

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

创建 AMI 生命周期策略。

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

New console

创建 AMI 策略

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

  3. Select policy type (选择策略类型) 页面,选择 EBS-backed AMI policy (EBS 支持的 AMI 策略),然后选择 Next (下一步)

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

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

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

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

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

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

  10. 选择 Next (下一步)

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

    1. Schedule details (计划详细信息) 部分执行以下操作:

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

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

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

      4. 对于 Retention type (保留类型),请指定计划创建的 AMI 的保留策略。您可以根据其总计数或存在时间保留 AMI。

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

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

        注意

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

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

      1. 要将所有用户定义的标签从源实例复制到计划创建的 AMI,请选择 Copy tags from source (从源复制标记)

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

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

    3. 要在不应再使用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 复制到其他区域,请在 Cross-Region copy (跨区域复制) 部分选择 Enable cross-Region copy (启用跨区域复制)。您可以将 AMI 复制到账户中最多三个其他区域。您必须为每个目标区域指定单独的跨区域复制规则。

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

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

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

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

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

      注意

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

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

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

  12. 查看策略摘要,然后选择 Create policy (创建策略)

Console

要创建 AMI 生命周期策略

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

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

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

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

    • Policy type (策略类型)—要创建的策略的类型。选择 EBS-backed AMI policy (EBS 支持的 AMI 策略)

    • Target with these tags (具有这些标签的目标) – 标识要备份的实例的资源标签。策略只备份具有指定标签键和值对的实例。

    • Policy tags (策略标签) – 要应用于生命周期策略的标签。

  4. 对于 IAM role (IAM 角色),请选择有权管理图片的 IAM 角色。AWS 提供默认角色,或者您可以创建自定义 IAM 角色。

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

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

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

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

    • Retention type (保留类型) – 您可以根据其总计数或存在时间保留 AMI。对于基于计数的保留,范围为 1 到 1000。在达到最大计数后,将在创建新 AMI 时删除最早的 AMI。对于基于存在时间的保留,范围是 1 天到 100 年。在每个 AMI 的保留期限过期后,会将其删除。保留期应大于或等于间隔。

      注意

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

    • Copy tags from source (从源复制标记) – 选择是否将所有用户定义的标签从源实例复制到此计划创建的 AMI。

    • Dynamic tags (动态标签) – 您可以选择使用源实例 ID 自动标记 AMI。

    • Additional tags (其他标签) – 指定要分配给此计划创建的 AMI 的任何其他标签。

    • Enable cross Region copy (启用跨区域复制) – 您可以将 AMI 复制到最多三个其他区域。

      对于每个区域,您可以选择不同的保留策略,还可以选择复制所有标签还是不复制任何标签。如果源 AMI 已加密或默认启用加密,则会加密复制的 AMI。如果 AMI 未加密,您可以启用加密。如果未指定 KMS 密钥,则会在每个目标区域中使用 EBS 加密的默认 KMS 密钥 对 AMI 进行加密。如果您为目标区域指定 KMS 密钥,则选定的 IAM 角色必须具有对 KMS 密钥 的访问权限。

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

  6. 指明在创建 AMI 之前是否应重启实例。为了防止目标实例重启,对于 Reboot Instance at policy run (策略运行时重启实例),请选择 No (否)。选择此选项可能会导致数据一致性问题。要在创建 AMI 之前重启实例,对于 Reboot Instance at policy run (策略运行时重启实例) 选择 Yes (是)。选择此选项可确保数据一致性,但可能导致多个目标实例同时重新启动。

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

  8. 请选择Create Policy(创建策略)

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 创建操作将在计划时间的一小时内开始。

  • 当 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,则必须手动将其注销。

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

  • 如果您终止某个策略按照基于计数的保留计划针对的实例,则该策略将不再管理以前从已终止的实例创建的 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 将会使用导致最新弃用日期的弃用规则。

其他资源

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