From 89112bf998422080d70759ffd8e197616efb6b7b Mon Sep 17 00:00:00 2001 From: Bradley Jones Date: Mon, 24 Apr 2023 22:38:10 +0100 Subject: [PATCH] fix: only set task serviceARN if the task is part of a service Signed-off-by: Bradley Jones --- pkg/inventory/ecs.go | 29 ++++++++++++++++++----------- pkg/inventory/ecs_test.go | 3 ++- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/pkg/inventory/ecs.go b/pkg/inventory/ecs.go index bc35453..1fe947f 100644 --- a/pkg/inventory/ecs.go +++ b/pkg/inventory/ecs.go @@ -134,23 +134,30 @@ func fetchTasksMetadata(client ecsiface.ECSAPI, cluster string, tasks []*string) return nil, err } + tMetadata := reporter.Task{ + ARN: *task.TaskArn, + ClusterARN: *task.ClusterArn, + TaskDefARN: *task.TaskDefinitionArn, + Tags: tagMap, + } + + // Group will be "servive:serviceName" if the task is part of a service, otherwise it will be + // "family:taskDefinitionFamily" if the task is not part of a service. groupParts := strings.Split(*task.Group, ":") if len(groupParts) != 2 { return nil, fmt.Errorf("unable to parse task group: %s", *task.Group) } - serviceName := groupParts[1] - serviceArn, err := constructServiceARN(*task.ClusterArn, serviceName) - if err != nil { - return nil, err + groupType := groupParts[0] + if groupType == "service" { + serviceName := groupParts[1] + serviceArn, err := constructServiceARN(*task.ClusterArn, serviceName) + if err != nil { + return nil, err + } + tMetadata.ServiceARN = serviceArn } - tasksMetadata = append(tasksMetadata, reporter.Task{ - ARN: *task.TaskArn, - ClusterARN: *task.ClusterArn, - TaskDefARN: *task.TaskDefinitionArn, - Tags: tagMap, - ServiceARN: serviceArn, - }) + tasksMetadata = append(tasksMetadata, tMetadata) } return tasksMetadata, nil diff --git a/pkg/inventory/ecs_test.go b/pkg/inventory/ecs_test.go index f1cb067..2f31584 100644 --- a/pkg/inventory/ecs_test.go +++ b/pkg/inventory/ecs_test.go @@ -3,9 +3,10 @@ package inventory import ( "testing" - "github.com/anchore/ecs-inventory/pkg/reporter" "github.com/aws/aws-sdk-go/service/ecs/ecsiface" "github.com/stretchr/testify/assert" + + "github.com/anchore/ecs-inventory/pkg/reporter" ) // Return a pointer to the passed value