创建任务定义修订,更新docker标记并使用.NET更新服务

时间:2020-01-22 16:58:02

标签: amazon-web-services aws-sdk amazon-ecs aws-sdk-net

作为使用.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吗?

1 个答案:

答案 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

让我知道您的想法!!