AWS ECS:如何使用Boto3更新现有Task Definition任务定义
使用Boto3更新ECS Task Definition的方法
你提到的操作逻辑是正确的,完全可以通过传入相同family名称、修改对应参数后再次调用register_task_definition接口完成“更新”操作,相关逻辑和操作示例如下:
- ECS的Task Definition属于不可变资源,官方不支持直接修改已经创建好的某一版本Task Definition的配置,常规所说的“更新”本质是在同一个family分组下生成一个版本号递增的新Task Definition
- 调用接口时只要保证
family参数和你要更新的目标Task Definition的family值完全一致,其他参数按需修改后提交即可,AWS会自动为该family生成新的版本
代码示例
import boto3 # 初始化ECS客户端 client = boto3.client('ecs') # 调用注册接口,family使用原有名称,仅修改需要更新的配置 resp = client.register_task_definition( # 此处必须填写你要更新的已有Task Definition对应的family名称 family="your-target-task-family", # 其他原有配置保持不变,仅调整需要修改的字段,比如更新容器镜像 networkMode="awsvpc", requiresCompatibilities=["FARGATE"], cpu="512", memory="1024", containerDefinitions=[ { "name": "web-container", "image": "registry.example.com/my-app:v2.0", # 此处替换为新的镜像版本 "essential": True, "portMappings": [{"containerPort": 80, "hostPort": 80}] } ] ) # 可获取新生成的版本信息 print(f"新版本号:{resp['taskDefinition']['revision']}") print(f"新版本ARN:{resp['taskDefinition']['taskDefinitionArn']}")
小提示:如果原有Task Definition配置比较复杂,不想手动重写所有参数,可以先调用
describe_task_definition接口拉取当前最新版本的完整配置,在其基础上修改对应字段后再调用注册接口,避免遗漏配置项。
内容的提问来源于stack exchange,提问作者Flo
相关产品推荐
相关产品推荐

