随着AWS Fargate的不断演进,为确保安全性和性能,AWS宣布将自动对部分ECS服务中的任务进行更新。这次更新涵盖了安全补丁和其他关键的软件更新,为您的应用程序提供更稳定和安全的运行环境。

更新详情

更新计划于 2023 年 12 月 4 日星期一 14:00:00 GMT 开始执行。下面是有关此更新的一些重要信息:

  1. 无需手动操作: 新启动的任务将自动使用最新的软件版本,您无需采取任何行动。
  2. 现有任务更新: 对于已经运行的任务,为了应用这些更新,您需要重新启动这些任务。ECS调度程序将在2023 年 12 月 4 日星期一 14:00:00 GMT 之后逐步替换这些任务。
  3. 最小中断: 在更新期间,服务通常不会中断。AWS将使用最小健康百分比,并在停止任务时启动新任务,以维持所需的服务计数。默认情况下,服务的最小健康百分比为 100%。
  4. 自定义更新时间: 如果您希望控制任务重新启动的时间,您可以在更新执行之前通过ECS命令行界面运行 update-service 命令,并指定 force-new-deployment 参数。例如:
$ aws ecs update-service --service service_name \
--cluster cluster_name --force-new-deployment

通过ECS SDK实现批量更新:

import boto3,time

def get_cluster_names(excluded_clusters=None):
    # 创建一个ECS客户端
    client = boto3.client('ecs')

    # 列出所有ECS集群
    response = client.list_clusters()

    # 打印每个集群的名称
    for cluster_arn in response['clusterArns']:
        cluster_name = cluster_arn.split('/')[-1]
        if excluded_clusters and cluster_name in excluded_clusters:
            continue
        yield cluster_name

def get_service_names(cluster_name):
    # 创建ECS客户端
    ecs_client = boto3.client('ecs')

    # 分页获取服务名称
    paginator = ecs_client.get_paginator('list_services')
    for page in paginator.paginate(cluster=cluster_name):
        for service_arn in page['serviceArns']:
            yield service_arn.split('/')[-1]

def update_service(cluster_name, service_name):
    ecs_client = boto3.client('ecs')
    response = ecs_client.update_service(cluster=cluster_name, service=service_name, forceNewDeployment=True)
    return response

excluded_clusters = ['ai-pro', 'govee-test', 'loghub-waf-ECSClusterStackCLClusterBCB8AA1C-Nj09dKyScWo1']

for cluster_name in get_cluster_names(excluded_clusters):
    for service_name in get_service_names(cluster_name):
        print(cluster_name,":",service_name)
        response = update_service(cluster_name, service_name)
        print(f"Updated service {service_name} in cluster {cluster_name}. Response: {response}")
        time.sleep(120)
  1. 使用 CodeDeploy 的服务: 如果您使用蓝/绿部署类型的服务,请参阅 create-deployment 文档 并创建新的部署,使用相同的任务定义修订进行部署。

进一步了解

有关更多关于Fargate更新过程的详细信息,请参阅 AWS Fargate 用户指南

联系支持

如果您对此更新计划有任何问题或疑虑,请随时联系 AWS Support 获取帮助。

请注意,您的ECS集群和服务可能受到此次更新的影响,您可以在AWS控制台的“受影响的资源”选项卡中查找详细信息。

在此次更新中,AWS致力于提供更高水平的服务质量和可用性,确保您的应用程序能够在安全且可靠的环境中运行。我们感谢您的理解和合作,如有任何进一步的问题,随时与我们联系。