繁体   English   中英

使用 .NET 创建任务定义修订、更新 docker 标签和更新服务

[英]Create task definition revision, update docker tag and update service with .NET

作为 .NET AWS SDK 自动部署的一部分,我正在尝试创建一个新的任务定义修订版,使用我新部署的版本更新 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 映像,然后使用现有定义和修改后的 docker 映像调用RegisterTaskDefinitionAsync吗?

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

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

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

让我知道你的想法。!。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM