[英]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.