随着AWS Fargate的不断演进,为确保安全性和性能,AWS宣布将自动对部分ECS服务中的任务进行更新。这次更新涵盖了安全补丁和其他关键的软件更新,为您的应用程序提供更稳定和安全的运行环境。
更新详情
更新计划于 2023 年 12 月 4 日星期一 14:00:00 GMT 开始执行。下面是有关此更新的一些重要信息:
- 无需手动操作: 新启动的任务将自动使用最新的软件版本,您无需采取任何行动。
- 现有任务更新: 对于已经运行的任务,为了应用这些更新,您需要重新启动这些任务。ECS调度程序将在2023 年 12 月 4 日星期一 14:00:00 GMT 之后逐步替换这些任务。
- 最小中断: 在更新期间,服务通常不会中断。AWS将使用最小健康百分比,并在停止任务时启动新任务,以维持所需的服务计数。默认情况下,服务的最小健康百分比为 100%。
- 自定义更新时间: 如果您希望控制任务重新启动的时间,您可以在更新执行之前通过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)
- 使用 CodeDeploy 的服务: 如果您使用蓝/绿部署类型的服务,请参阅 create-deployment 文档 并创建新的部署,使用相同的任务定义修订进行部署。
进一步了解
有关更多关于Fargate更新过程的详细信息,请参阅 AWS Fargate 用户指南。
联系支持
如果您对此更新计划有任何问题或疑虑,请随时联系 AWS Support 获取帮助。
请注意,您的ECS集群和服务可能受到此次更新的影响,您可以在AWS控制台的“受影响的资源”选项卡中查找详细信息。
在此次更新中,AWS致力于提供更高水平的服务质量和可用性,确保您的应用程序能够在安全且可靠的环境中运行。我们感谢您的理解和合作,如有任何进一步的问题,随时与我们联系。