0

作为使用 .NET AWS 开发工具包进行自动化部署的一部分,我正在尝试创建一个新的任务定义修订版,使用我新部署的版本更新 docker 映像标签标签,然后更新服务以使用该新修订版。

我有这样的事情:

      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 映像,然后RegisterTaskDefinitionAsync使用现有定义和修改后的 docker 映像调用?

4

1 回答 1

0

UI 会自动进行多个 API 调用,并为您提供从以前的版本创建新版本的选项。为了让你达到同样的效果,你可以尝试这样的事情。

首先使用族前缀列出任务定义(假设您使用图像名称或某些前缀创建任务定义)。

Task<ListTaskDefinitionsResponse> ListTaskDefinitionsAsync(
         ListTaskDefinitionsRequest request,
         CancellationToken cancellationToken
)

使用 The ListTaskDefinitionsResponse,选择最新的任务定义 ARN 并进行另一个 API 调用以获取完整的任务定义响应。

Task<DescribeTaskDefinitionResponse> DescribeTaskDefinitionAsync(
         DescribeTaskDefinitionRequest request,
         CancellationToken cancellationToken
)

现在,您拥有最新的 TaskDefinition 对象,您可以在其中修改图像版本并再次发布它。

Task<RegisterTaskDefinitionResponse> RegisterTaskDefinitionAsync(
         RegisterTaskDefinitionRequest request,
         CancellationToken cancellationToken
)

AWS .NET 开发工具包参考 - https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/ECS/TECSClient.html

让我知道你的想法!!。

于 2020-01-22T19:45:55.477 回答