in ecs/task.go [183:246]
func (ecs *ECS) DescribeTasks(taskIds []string) []Task {
var tasks []Task
if len(taskIds) == 0 {
return tasks
}
resp, err := ecs.svc.DescribeTasks(
&awsecs.DescribeTasksInput{
Cluster: aws.String(ecs.ClusterName),
Tasks: aws.StringSlice(taskIds),
},
)
if err != nil {
console.ErrorExit(err, "Could not describe ECS tasks")
}
for _, t := range resp.Tasks {
taskArn := aws.StringValue(t.TaskArn)
contents := strings.Split(taskArn, "/")
taskId := contents[len(contents)-1]
task := Task{
Cpu: aws.StringValue(t.Cpu),
CreatedAt: aws.TimeValue(t.CreatedAt),
DeploymentId: ecs.getDeploymentId(aws.StringValue(t.TaskDefinitionArn)),
DesiredStatus: aws.StringValue(t.DesiredStatus),
LastStatus: aws.StringValue(t.LastStatus),
Memory: aws.StringValue(t.Memory),
TaskId: taskId,
StartedBy: aws.StringValue(t.StartedBy),
}
taskDefinition := ecs.DescribeTaskDefinition(aws.StringValue(t.TaskDefinitionArn))
task.Image = aws.StringValue(taskDefinition.ContainerDefinitions[0].Image)
task.TaskRole = aws.StringValue(taskDefinition.TaskRoleArn)
for _, environment := range taskDefinition.ContainerDefinitions[0].Environment {
task.EnvVars = append(
task.EnvVars,
EnvVar{
Key: aws.StringValue(environment.Name),
Value: aws.StringValue(environment.Value),
},
)
}
if len(t.Attachments) == 1 {
for _, detail := range t.Attachments[0].Details {
switch aws.StringValue(detail.Name) {
case detailNetworkInterfaceId:
task.EniId = aws.StringValue(detail.Value)
case detailSubnetId:
task.SubnetId = aws.StringValue(detail.Value)
}
}
}
tasks = append(tasks, task)
}
return tasks
}