使用部署策略 - Amazon AppConfig
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用部署策略

部署策略使您能够在几分钟或几小时内缓慢地将更改发布到生产环境。 Amazon AppConfig 部署策略定义了配置部署的以下重要方面。

设置 描述

Deployment type(部署类型)

部署类型定义了配置的部署或部署方式。 Amazon AppConfig 支持线性和指数部署类型。

  • 线性:对于这种类型,按在部署中均匀分布的增长因子的增量来 Amazon AppConfig 处理部署。下面是一个 10 小时部署的时间表示例,采用 20% 的线性增长:

    运行时间 部署进度

    0 小时

    0%

    2 小时

    20%

    4 小时

    40%

    6 小时

    60%

    8 小时

    80%

    10 小时

    100%

  • 指数:对于此类型, Amazon AppConfig 使用以下公式以指数方式处理部署:G*(2^N)。在此公式中,G 是用户指定的步骤百分比,N 是在配置部署到所有目标之前的步骤数。例如,如果将增长系数指定为 2,则系统将按如下方式推出配置:

    2*(2^0) 2*(2^1) 2*(2^2)

    以数字表示,部署的推出情况如下:2% 的目标、4% 的目标、8% 的目标,并持续到将配置部署到所有目标为止。

步骤百分比(增长系数)

该设置指定在部署的每个步骤中作为目标的调用方百分比。

注意

在开发工具包和 Amazon AppConfig API 参考中,step percentage 称为 growth factor

Deployment time (部署时间)

此设置指定 Amazon AppConfig 部署到主机的时间。这不是超时值。这是一个按间隔处理部署的时段。

Bake time (烘焙时间)

此设置指定在将配置部署到 100% 的目标之后,在考虑部署已完成之前, Amazon AppConfig 监控 Amazon CloudWatch 警报的时间长度。如果在此期间触发了警报, Amazon AppConfig 将回滚部署。您必须配置权限 Amazon AppConfig 才能根据 CloudWatch 警报进行回滚。有关更多信息,请参阅 (可选)根据警报配置回滚权限 CloudWatch

您可以选择随附的预定义策略, Amazon AppConfig 也可以创建自己的策略。

预定义的部署策略

Amazon AppConfig 包括预定义的部署策略,可帮助您快速部署配置。您可以在部署配置时选择以下选项之一,而不是创建自己的策略。

部署策略 描述

AppConfig.Linear20 6 分钟 PercentEvery

Amazon 推荐

此策略每 6 分钟将配置部署到所有目标的 20%,以进行 30 分钟部署。系统会监控 Amazon CloudWatch 警报 30 分钟。如果此时未收到任何警报,则部署已完成。如果在这段时间内触发了警报,则会回 Amazon AppConfig 滚部署。

我们建议将此策略用于生产部署,因为它符合 Amazon 最佳实践,并且由于其持续时间和烘焙时间长,因此更加重视部署安全。

AppConfig.Canary 10% 20 分钟

Amazon 推荐

此策略在 20 分钟内使用 10% 的增长系数以指数方式处理部署。系统将监视 CloudWatch 警报 10 分钟。如果此时未收到任何警报,则部署已完成。如果在这段时间内触发了警报,则会回 Amazon AppConfig 滚部署。

我们建议将此策略用于生产部署,因为它符合配置部署 Amazon 的最佳实践。

AppConfig.AllAtOnce

快速

此策略会立即将配置部署到所有目标。系统将监视 CloudWatch 警报 10 分钟。如果此时未收到任何警报,则部署已完成。如果在此期间触发了警报, Amazon AppConfig 将回滚部署。

AppConfig.Linear50 30Seconds PercentEvery

测试/演示

此策略每 30 秒将配置部署到所有目标的一半,以进行一分钟部署。系统会监视 Amazon CloudWatch 警报 1 分钟。如果此时未收到任何警报,则部署已完成。如果在这段时间内触发了警报,则会回 Amazon AppConfig 滚部署。

我们建议仅将此策略用于测试或演示目的,因为它持续时间和烘焙时间短。

创建部署策略

如果您不想使用其中一种预定义的部署策略,则可以创建自己的部署策略。您最多可以创建 20 个部署策略。在部署配置时,您可以选择最适合应用程序和环境的部署策略。

创建 Amazon AppConfig 部署策略(控制台)

使用以下过程通过 Amazon Systems Manager 控制台创建 Amazon AppConfig 部署策略。

创建部署策略
  1. 打开 Amazon Systems Manager 控制台,网址为 https://console.aws.amazon.com/systems-manager/appconfig/

  2. 在导航窗格中,选择部署策略,然后选择创建部署策略

  3. 对于 Name (名称),请输入部署策略的名称。

  4. 对于 Description (描述),请输入有关部署策略的信息。

  5. 对于 Deployment type (部署类型),选择类型。

  6. 对于 Step percentage (步骤百分比),请选择在部署的每个步骤中作为目标的调用方百分比。

  7. 对于 Deployment time (部署时间),请输入部署的总持续时间(以分钟或小时为单位)。

  8. Bake time 中,输入在继续部署的下一步或考虑完成部署之前,监控 Amazon CloudWatch 警报的总时间(以分钟或小时为单位)。

  9. 标签 部分中,输入一个键和可选的值。您最多可以为一个资源指定 50 个标签。

  10. 选择 Create deployment strategy (创建部署策略)

重要

如果您为创建了配置文件 Amazon CodePipeline,则必须在中创建指定 CodePipeline Amazon AppConfig 为部署提供者的管道。您不需要执行 部署配置。但是,您必须配置客户端以接收应用程序配置更新,如 通过直接调用 API 获取配置 中所述。有关创建指定 Amazon AppConfig 为部署提供者的管道的信息,请参阅《Amazon CodePipeline 用户指南》中的教程:创建 Amazon AppConfig 用作部署提供者的管道

继续执行部署配置

创建 Amazon AppConfig 部署策略(命令行)

以下过程介绍如何使用 Amazon CLI (在 Linux 或 Windows 上)或 Amazon Tools for PowerShell 如何创建 Amazon AppConfig 部署策略。

分步创建部署策略
  1. 打开 Amazon CLI.

  2. 运行以下命令,创建部署策略。

    Linux
    aws appconfig create-deployment-strategy \ --name A_name_for_the_deployment_strategy \ --description A_description_of_the_deployment_strategy \ --deployment-duration-in-minutes Total_amount_of_time_for_a_deployment_to_last \ --final-bake-time-in-minutes Amount_of_time_Amazon AppConfig_monitors_for_alarms_before_considering_the_deployment_to_be_complete \ --growth-factor The_percentage_of_targets_to_receive_a_deployed_configuration_during_each_interval \ --growth-type The_linear_or_exponential_algorithm_used_to_define_how_percentage_grows_over_time \ --replicate-to To_save_the_deployment_strategy_to_a_Systems_Manager_(SSM)_document \ --tags User_defined_key_value_pair_metadata_of_the_deployment_strategy
    Windows
    aws appconfig create-deployment-strategy ^ --name A_name_for_the_deployment_strategy ^ --description A_description_of_the_deployment_strategy ^ --deployment-duration-in-minutes Total_amount_of_time_for_a_deployment_to_last ^ --final-bake-time-in-minutes Amount_of_time_Amazon AppConfig_monitors_for_alarms_before_considering_the_deployment_to_be_complete ^ --growth-factor The_percentage_of_targets_to_receive_a_deployed_configuration_during_each_interval ^ --growth-type The_linear_or_exponential_algorithm_used_to_define_how_percentage_grows_over_time ^ --name A_name_for_the_deployment_strategy ^ --replicate-to To_save_the_deployment_strategy_to_a_Systems_Manager_(SSM)_document ^ --tags User_defined_key_value_pair_metadata_of_the_deployment_strategy
    PowerShell
    New-APPCDeploymentStrategy ` --Name A_name_for_the_deployment_strategy ` --Description A_description_of_the_deployment_strategy ` --DeploymentDurationInMinutes Total_amount_of_time_for_a_deployment_to_last ` --FinalBakeTimeInMinutes Amount_of_time_Amazon AppConfig_monitors_for_alarms_before_considering_the_deployment_to_be_complete ` --GrowthFactor The_percentage_of_targets_to_receive_a_deployed_configuration_during_each_interval ` --GrowthType The_linear_or_exponential_algorithm_used_to_define_how_percentage_grows_over_time ` --ReplicateTo To_save_the_deployment_strategy_to_a_Systems_Manager_(SSM)_document ` --Tag Hashtable_type_User_defined_key_value_pair_metadata_of_the_deployment_strategy

    系统将返回类似于以下内容的信息。

    Linux
    {
       "Id": "Id of the deployment strategy",
       "Name": "Name of the deployment strategy",
       "Description": "Description of the deployment strategy",
       "DeploymentDurationInMinutes": "Total amount of time the deployment lasted",
       "GrowthType": "The linear or exponential algorithm used to define how percentage grew over time",
       "GrowthFactor": "The percentage of targets that received a deployed configuration during each interval",  
       "FinalBakeTimeInMinutes": "The amount of time Amazon AppConfig monitored for alarms before considering the deployment to be complete",
       "ReplicateTo": "The Systems Manager (SSM) document where the deployment strategy is saved"
    }
    Windows
    {
       "Id": "Id of the deployment strategy",
       "Name": "Name of the deployment strategy",
       "Description": "Description of the deployment strategy",
       "DeploymentDurationInMinutes": "Total amount of time the deployment lasted",
       "GrowthType": "The linear or exponential algorithm used to define how percentage grew over time",
       "GrowthFactor": "The percentage of targets that received a deployed configuration during each interval",  
       "FinalBakeTimeInMinutes": "The amount of time Amazon AppConfig monitored for alarms before considering the deployment to be complete",
       "ReplicateTo": "The Systems Manager (SSM) document where the deployment strategy is saved"
    }
    PowerShell
    ContentLength               : Runtime of the command
    DeploymentDurationInMinutes : Total amount of time the deployment lasted
    Description                 : Description of the deployment strategy
    FinalBakeTimeInMinutes      : The amount of time Amazon AppConfig monitored for alarms before considering the deployment to be complete
    GrowthFactor                : The percentage of targets that received a deployed configuration during each interval
    GrowthType                  : The linear or exponential algorithm used to define how percentage grew over time
    HttpStatusCode              : HTTP Status of the runtime
    Id                          : The deployment strategy ID
    Name                        : Name of the deployment strategy
    ReplicateTo                 : The Systems Manager (SSM) document where the deployment strategy is saved
    ResponseMetadata            : Runtime Metadata