@@ -12,6 +12,8 @@ import (
1212 "github.com/aws/aws-sdk-go/service/ecs"
1313)
1414
15+ const DescribeTasksChunkSize = 100
16+
1517type 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