Skip to content

Commit 24474f6

Browse files
committed
Fix GetTasks by chunking invocation of DescribeTasks
1 parent 55f96c0 commit 24474f6

2 files changed

Lines changed: 24 additions & 8 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,5 @@
1414
.glide/
1515

1616
bin/
17+
env.sh
18+
prometheus-ecs-sd.json

aws/aws.go

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212
"github.com/aws/aws-sdk-go/service/ecs"
1313
)
1414

15+
const DescribeTasksChunkSize = 100
16+
1517
type AWS struct {
1618
ecsService *ecs.ECS
1719
ec2Service *ec2.EC2
@@ -169,19 +171,31 @@ func (aws *AWS) GetTasks(cluster *ecs.Cluster) (tasks []*ecs.Task, err error) {
169171
return !lastPage
170172
})
171173
if err != nil {
172-
return nil, fmt.Errorf("error listing ECS tasks: %s", err)
174+
return tasks, fmt.Errorf("error listing ECS tasks: %s", err)
173175
}
174176

175177
if len(taskArns) == 0 {
176178
return
177179
}
178180

179-
taskDescriptionsResponse, err := aws.ecsService.DescribeTasks(&ecs.DescribeTasksInput{
180-
Cluster: cluster.ClusterArn,
181-
Tasks: taskArns,
182-
})
183-
if err != nil {
184-
return nil, fmt.Errorf("error describing ECS tasks: %s", err)
181+
var taskArnsChunks [][]*string
182+
for i := 0; i <= len(taskArns); i += DescribeTasksChunkSize {
183+
end := i + DescribeTasksChunkSize
184+
if end > len(taskArns) {
185+
end = len(taskArns)
186+
}
187+
taskArnsChunks = append(taskArnsChunks, taskArns[i:end])
188+
}
189+
190+
for _, taskArnsChunk := range taskArnsChunks {
191+
taskDescriptionsResponse, err := aws.ecsService.DescribeTasks(&ecs.DescribeTasksInput{
192+
Cluster: cluster.ClusterArn,
193+
Tasks: taskArnsChunk,
194+
})
195+
if err != nil {
196+
return tasks, fmt.Errorf("error describing ECS tasks: %s", err)
197+
}
198+
tasks = append(tasks, taskDescriptionsResponse.Tasks...)
185199
}
186-
return taskDescriptionsResponse.Tasks, nil
200+
return tasks, nil
187201
}

0 commit comments

Comments
 (0)