自动化 AMI 生命周期 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

自动化 AMI 生命周期

以下程序说明了如何使用 Amazon Data Lifecycle Manager 来自动执行 EBS 支持的 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 复制到其他区域,请在 Cross-Region copy (跨区域复制) 部分选择 Enable cross-Region copy (启用跨区域复制)。您可以将 AMI 复制到账户中最多三个其他区域。您必须为每个目标区域指定单独的跨区域复制规则。

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

      注意

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

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

    5. 添加所需计划之后,请选择 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 角色。Amazon 提供默认角色,或者您可以创建自定义 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. 选择创建策略

Command line

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

注意

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

AMI 生命周期策略

此示例创建的 AMI 生命周期策略可在不重新启动目标实例的情况下创建标签键 purpose 的值为 production 的所有实例的 AMI。该策略包括一个每天可在 UTC 01:00 创建 AMI 的计划。该策略将保留最新的两个 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" }], "Schedules": [{ "Name": "DailyAMIs", "TagsToAdd": [{ "Key": "type", "Value": "myDailyAMI" }], "CreateRule": { "Interval": 24, "IntervalUnit": "HOURS", "Times": [ "01:00" ] }, "RetainRule": { "Count": 2 }, "CopyTags": true } ], "Parameters" : { "NoReboot":true } }

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

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