作为使用.NET AWS SDK进行自动部署的一部分,我试图创建一个新的任务定义修订版,使用新部署的版本更新docker映像标签标签,然后更新服务以使用该新修订版。 / p>
我有这样的东西:
var taskDefinitionResponse = await _ecsClient.RegisterTaskDefinitionAsync(new RegisterTaskDefinitionRequest
{
ContainerDefinitions = new List<ContainerDefinition>(new[] {new ContainerDefinition(){Image = "new image:v123"}})
});
await _ecsClient.UpdateServiceAsync(new UpdateServiceRequest()
{
TaskDefinition = taskDefinitionResponse.TaskDefinition.TaskDefinitionArn,
});
我关心的是上面的代码,它不会复制现有的任务定义,例如,当您单击“创建新修订”时,必须在AWS控制台中选择一个任务定义,以便该按钮创建一个副本,以便随后修改它并保存新修订,所以我需要一些代码来获取现有任务定义,然后更改docker映像,然后使用现有定义和已修改的docker映像调用RegisterTaskDefinitionAsync
吗?
答案 0 :(得分:0)
用户界面会自动进行多个API调用,并提供从以前的版本创建新修订的选项。为了达到相同目的,您可以尝试这样的操作。
首先使用系列前缀列出TaskDefinitions(假设您正在使用图像名称或某些前缀创建任务定义)。
Task<ListTaskDefinitionsResponse> ListTaskDefinitionsAsync(
ListTaskDefinitionsRequest request,
CancellationToken cancellationToken
)
使用ListTaskDefinitionsResponse
,选择“最新任务定义” ARN并进行另一个API调用,以获取完整的任务定义响应。
Task<DescribeTaskDefinitionResponse> DescribeTaskDefinitionAsync(
DescribeTaskDefinitionRequest request,
CancellationToken cancellationToken
)
现在,您有了最新的TaskDefinition对象,可以在其中修改映像版本并再次发布。
Task<RegisterTaskDefinitionResponse> RegisterTaskDefinitionAsync(
RegisterTaskDefinitionRequest request,
CancellationToken cancellationToken
)
AWS .NET SDK参考- https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/ECS/TECSClient.html
让我知道您的想法!!