diff --git a/.gitignore b/.gitignore index 480478873..08b8261b2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ bin/ dist/ +/.idea/ /.vscode/ diff --git a/ecs/aws.go b/ecs/aws.go index 51936bf47..6b566e86a 100644 --- a/ecs/aws.go +++ b/ecs/aws.go @@ -51,6 +51,7 @@ type API interface { GetStackID(ctx context.Context, name string) (string, error) ListStacks(ctx context.Context) ([]api.Stack, error) GetStackClusterID(ctx context.Context, stack string) (string, error) + GetStackMetadataClusterID(ctx context.Context, stack string) (string, error) GetServiceTaskDefinition(ctx context.Context, cluster string, serviceArns []string) (map[string]string, error) ListStackServices(ctx context.Context, stack string) ([]string, error) GetServiceTasks(ctx context.Context, cluster string, service string, stopped bool) ([]*ecs.Task, error) diff --git a/ecs/list.go b/ecs/list.go index d6f1604f0..c0dc5579b 100644 --- a/ecs/list.go +++ b/ecs/list.go @@ -71,6 +71,12 @@ func (b *ecsAPIService) checkStackState(ctx context.Context, name string) error svcNames[r.ARN] = r.LogicalID } } + if len(cluster) == 0 { + cluster, err = b.aws.GetStackMetadataClusterID(ctx, name) + if err != nil { + return err + } + } if len(svcArns) == 0 { return nil } diff --git a/ecs/sdk.go b/ecs/sdk.go index 72c2a3f01..44a1a40da 100644 --- a/ecs/sdk.go +++ b/ecs/sdk.go @@ -505,6 +505,10 @@ func (s sdk) GetStackClusterID(ctx context.Context, stack string) (string, error token = response.NextToken } // stack is using user-provided cluster + return s.GetStackMetadataClusterID(ctx, stack) +} + +func (s sdk) GetStackMetadataClusterID(ctx context.Context, stack string) (string, error) { res, err := s.CF.GetTemplateSummaryWithContext(ctx, &cloudformation.GetTemplateSummaryInput{ StackName: aws.String(stack), })