使用boto3,我们可以创建一个新的任务定义:
client = boto3.client('ecs')
client.register_task_definition(...)
我们如何更新现有的任务定义?只是使用更改和相同的族名称进行另一个调用吗?
使用boto3,我们可以创建一个新的任务定义:
client = boto3.client('ecs')
client.register_task_definition(...)
如上所述,您需要使用register_task_definition为任务定义创建新版本。非常令人烦恼的是,即使您可能只想更改其中一个参数,您仍需要再次传入所有参数。这将创建一个新版本。
这非常令人恼火,因为这是标准ECS部署的工作流程。即创建更新了图像标记的新任务定义版本。为什么没有一些内置功能可以做到这一点...
我所做的就是调用describe_task_definition,更新响应字典以修改您想要的内容,删除任何无法在调用register_task_definition时用作kwargs的键,然后调用register_task_definition并传入该字典。对我而言完全有效。
existing_task_def_response = ecs_client.describe_task_definition(
taskDefinition=ecs_task_definition_name,
)
new_task_definition = existing_task_def_response['taskDefinition']
#edit the image tag here
new_task_definition['containerDefinitions'][0]['image'] = yournewimagetagforexample
#drop all the keys from the dict that you can't use as kwargs in the next call. could be explicit here and map things
remove_args=['compatibilities', 'registeredAt', 'registeredBy', 'status', 'revision', 'taskDefinitionArn', 'requiresAttributes' ]
for arg in remove_args:
new_task_definition.pop(arg)
reg_task_def_response = ecs_client.register_task_definition(
**new_task_definition
)
boto3
的文档吗?有几个update_
方法。 - DeepSpace