更新 Amazon ECS 服务 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

更新 Amazon ECS 服务

创建服务后,有时可能需要更新服务参数,例如任务数。

当您更新使用 Amazon ECS 断路器的服务时,Amazon ECS 会创建服务部署和服务修订。这些资源允许您查看有关服务历史记录的详细信息。有关更多信息,请参阅 使用 Amazon ECS 服务部署查看服务历史记录

先决条件

更新服务前,请确认您的部署类型可以更改哪些服务参数。要获得参数的完整列表,请参阅更新 Amazon ECS 服务参数

过程

Console
  1. https://console.aws.amazon.com/ecs/v2 打开控制台。

  2. Clusters(集群)页面上,选择集群。

  3. 在集群详细信息页面上的服务部分,选中服务旁边的复选框,然后选择更新

  4. 要让您的服务开始新的部署,请选择 Force new deployment(强制执行新部署)。

  5. 对于任务定义,选择任务定义系列和修订。

    重要

    控制台验证所选任务定义系列和修订与定义的计算配置兼容。如果收到警告,请验证任务定义兼容性和您选择的计算配置。

  6. 如果您对于 Desired tasks(预期任务)使用 Replica(副本),输入要在服务中启动并保留的任务数量。

  7. 如果您选择副本,要让 Amazon ECS 监控在可用区之间的任务分配情况,并在出现不平衡时重新分配任务,请在可用区服务重新平衡下选择可用区服务重新平衡

  8. 对于Min running tasks(最小运行任务数),输入服务中在部署期间必须保持 RUNNING 状态的任务数的下限,以所需任务数的百分比表示(四舍五入到最接近的整数)。有关更多信息,请参阅部署配置

  9. 对于 Max running tasks(最大运行任务数),输入部署期间 RUNNINGPENDING 状态下允许的服务中任务数的上限,以所需任务数的百分比表示(四舍五入到最接近的整数)。

  10. 要配置 Amazon ECS 如何检测和处理部署故障,请展开 Deployment failure detection(部署故障检测),然后选择您的选项。

    1. 要在任务无法启动时停止部署,请选择 Use the Amazon ECS deployment circuit breaker(使用 Amazon ECS 部署断路器)。

      要让软件在部署断路器将部署设置为故障状态时自动将部署回滚到上次完成的部署状态,请选择故障时回滚

    2. 要根据应用程序指标停止部署,请选择使用 CloudWatch 警报。然后,从 CloudWatch 警报名称中选择警报。要创建新报警,请转到 CloudWatch 控制台。

      要让软件在 CloudWatch 警报将部署设置为故障状态时自动将部署回滚到上次完成的部署状态,请选择故障时回滚

  11. 要更改计算选项,请展开计算配置,然后执行以下操作:

    1. 对于 Amazon Fargate 上的服务,请在 Platform version(平台版本)中选择新版本。

    2. 对于使用容量提供程序策略的服务,请对容量提供程序策略执行以下操作:

      • 要添加其他容量提供程序,请选择添加更多。然后,对于容量提供程序,请选择容量提供程序。

      • 要移除容量提供程序,请在容量提供商程序的右侧选择删除

      使用自动扩缩组容量提供程序的服务无法更新为使用 Fargate 容量提供程序。使用 Fargate 容量提供程序的服务无法更新为使用自动扩缩组容量提供程序。

  12. (可选)要配置服务自动扩缩,请展开服务自动扩缩,然后指定以下参数。要使用预测式自动扩缩(这将检查流量中的历史负载数据),请在创建服务后对其进行配置。有关更多信息,请参阅 使用历史模式通过预测式扩缩来扩展 Amazon ECS 服务

    1. 要使用服务自动扩缩,请选择 Service auto scaling(服务自动扩缩)。

    2. 对于最小任务数,输入供服务自动扩缩使用的任务数的下限。所需计数不会低于此计数。

    3. 对于最大任务数,输入供服务自动扩缩使用的任务数的上限。所需计数不会高于此计数。

    4. 选择策略类型。在扩展策略类型下,选择以下选项之一。

      使用此策略类型 请执行该操作

      目标跟踪

      1. 对于 Scaling policy type (扩展策略类型) 选择 Target tracking (目标跟踪)。

      2. 对于 Policy name(策略名称),请输入策略的名称。

      3. 对于 ECS 服务指标,选择以下指标之一。

        • ECSServiceAverageCPUUtilization – 服务的平均 CPU 使用率。

        • ECSServiceAverageMemoryUtilization – 服务的平均内存使用率。

        • ALBRequestCountPerTarget – 应用程序负载均衡器目标组中每个目标完成的请求数。

      4. 对于 Target value(目标值),输入服务为所选指标保留的值。

      5. 对于横向扩展冷却时间,输入一个横向扩展活动(添加任务)结束后,在另一个横向扩展活动启动之前必须经过的时间量(以秒为单位)。

      6. 对于横向缩减冷却时间,输入一个横向缩减活动(删除任务)结束后,在另一个横向缩减活动启动之前必须经过的时间量(以秒为单位)。

      7. 要防止策略执行缩减活动,请选择 Turn off scale-in(关闭横向缩减)。

      8. •(可选)如果您希望扩展策略针对增加的流量进行横向扩展,但不需要在流量减少时横向缩减,请选择关闭横向缩减

      分步扩缩
      1. 对于 Scaling policy type (扩展策略类型) 选择 Step scaling (分步扩展)。

      2. 对于策略名称,请输入策略的名称。

      3. 对于 Alarm name (警报名称),为警报输入一个唯一名称。

      4. 对于 Amazon ECS 服务指标,选择要用于警报的指标。

      5. 对于统计信息,请选择警报统计信息。

      6. 对于周期,选择警报的周期。

      7. 对于警报条件,请选择如何将所选指标与定义的阈值进行比较。

      8. 用于比较指标的阈值启动警报的评估周期中,请输入用于警报的阈值和评估阈值的时长。

      9. 扩展操作下,执行以下操作:

        • 对于操作,选择是否为您的服务增加、删除或设置具体预期数量。

        • 如果您选择增加或删除任务,对于,请输入启动扩展操作后要增加或删除的任务数(或现有任务的百分比)。如果您选择设置了所需的数量,则请输入任务数量。在类型中,选择是整数还是现有所需计数的百分比值。

        • 对于下限上限,输入分步扩展调整的下限和上限。默认情况下,添加策略的下限为警报阈值,上限为正 (+) 无穷。默认情况下,移除策略的上限为警报阈值,下限为负 (-) 无穷。

        • (可选)添加其他扩展选项。选择添加新的扩展操作,然后重复扩展操作步骤。

        • 对于冷却时间,输入等待先前的扩展活动生效的时间(以秒为单位)。对于添加策略,该时间是在横向扩展活动之后,扩展策略阻止横向缩减活动并限制一次可以横向扩展的任务数量的时间。对于移除策略,该时间是横向缩减活动结束后,在另一个横向缩减活动可以开始前经过的时间。

  13. (可选)要使用 Service Connect,请选择 Turn on Service Connect(开启 Service Connect),然后指定以下内容:

    1. Service Connect configuration(Service Connect 配置)下,指定客户端模式。

      • 如果您的服务运行的网络客户端应用程序只需要连接到命名空间中的其他服务,请选择仅限客户端

      • 如果您的服务运行网络或 Web 服务应用程序且需要为该服务提供端点并连接到命名空间中的其他服务,请选择 Client and server(客户端和服务器)。

    2. 要使用默认集群命名空间以外的命名空间,对于 Namespace(命名空间),请选择服务命名空间。

  14. 如果您的任务使用的数据卷与部署时的配置兼容,则可以通过扩展来配置该卷。

    卷名称和卷类型在您创建任务定义修订时配置,在更新服务时无法更改。要更新卷名称和类型,您必须创建新的任务定义修订并使用新修订更新服务。

    要配置此卷类型 请执行该操作

    Amazon EBS

    1. EBS 卷类型选择要附加到任务的 EBS 卷的类型。

    2. 大小(GiB)输入卷大小的有效值,以吉字节(GiB)为单位。您可以指定最小 1GiB 和最大 16384GiB 的卷大小。除非您提供快照 ID,否则此值为必填值。

    3. 对于 IOPS,输入该卷应提供的输入/输出操作的次数(IOPS)的最大值。此值只能针对 io1io2gp3 卷类型进行配置。

    4. 对于吞吐量(MiB/s),以每秒兆字节(MiBps 或 MiB/s)为单位输入卷应提供的吞吐量。此值只能针对 gp3 卷类型进行配置。

    5. 对于快照 ID,请选择现有的 Amazon EBS 卷快照,或者如果您想从快照中创建卷,请输入快照的 ARN。您还可以通过不选择或输入快照 ID 来创建新的空卷。

    6. 如果指定快照 ID,则可以指定卷初始化速率 (MiB/s)。输入一个介于 100 和 300 之间的值(以 MiB/s 为单位),该值确定使用快照 ID 从指定的快照加载数据以创建卷的速度。

    7. 对于文件系统类型,请选择将用于在卷上数据存储和检索的文件系统的类型。您可以选择操作系统默认类型或特定的文件系统类型。Linux 的默认设置为 XFS。对于从快照创建的卷,必须指定创建快照时卷使用的相同文件系统类型。如果文件系统类型不匹配,则任务将无法启动。

    8. 对于基础设施角色,请选择一个具有必要权限的 IAM 角色,以允许 Amazon ECS 管理任务的 Amazon EBS 卷。您可以将 AmazonECSInfrastructureRolePolicyForVolumes 托管策略附加到该角色,也可以使用策略作为指南,以创建并附加您自己的具有满足您特定需求的权限的策略。有关必要权限的更多信息,请参阅Amazon ECS 基础设施 IAM 角色

    9. 对于加密,如果您想使用 Amazon EBS 默认加密设置,则请选择默认。如果您的账户配置了默认加密,则该卷将使用设置中指定的 Amazon Key Management Service(Amazon KMS)密钥进行加密。如果您选择默认,但未开启 Amazon EBS 默认加密,则该卷将处于未加密状态。

      如果选择自定义,则可以为卷加密指定您选择的 Amazon KMS key。

      如果选择,则除非您配置了加密,或者您使用加密的快照创建了卷,否则该卷将处于未加密状态。

    10. 如果您选择了自定义作为加密,则必须指定要使用的 Amazon KMS key。为 KMS 密钥选择 Amazon KMS key 或输入密钥 ARN。如果您选择使用对称的客户托管密钥对卷进行加密,请确保您拥有 Amazon KMS key 策略中定义的正确权限。有关更多信息,请参阅 Amazon EBS 卷的数据加密

    11. (可选)在标签下,您可以通过传播任务定义或服务中的标签或提供自己的标签来将标签添加到 Amazon EBS 卷中。

      如果您要传播任务定义中的标签,请为从中传播标签选择任务定义。如果要从服务中传播标签,则请为传播标签来源选择服务。如果您选择不传播,或者如果您未选择值,则不会传播标签。

      如果您想提供自己的标签,请选择添加标签,然后为您添加的每个标签提供密钥和值。

      有关标记 Amazon EBS 卷的更多信息,请参阅标记 Amazon EBS 卷

  15. (可选)为了帮助识别您的服务,请展开 Tags(标签)部分,然后配置您的标签。

    • [添加标签] 选择添加标签,然后执行以下操作:

      • 对于 Key(键),输入键名称。

      • 对于,输入键值。

    • [删除标签] 在标签旁,选择 Remove tag (删除标签)

  16. 选择更新

Amazon CLI
  • 运行 update-service。有关运行该命令的信息,请参阅《Amazon Command Line Interface Reference》中的 update-service

    以下 update-service 示例将服务 my-http-service 所需的任务计数更新为 2。

    user-input 替换为您的值。

    aws ecs update-service \ --cluster MyCluster \ --service my-http-service \ --desired-count 2

后续步骤

跟踪部署并查看使用 Amazon ECS 断路器的服务的服务历史记录。有关更多信息,请参阅 使用 Amazon ECS 服务部署查看服务历史记录