ecs

package
v1.0.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 14, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ECSCalls = []types.AWSService{
	{
		Name: "ecs:ListClusters",
		Call: func(ctx context.Context, sess *session.Session) (interface{}, error) {
			var allClusters []*ecs.Cluster

			originalConfig := sess.Config
			for _, region := range types.Regions {
				regionConfig := &aws.Config{
					Region:      aws.String(region),
					Credentials: originalConfig.Credentials,
				}
				regionSess, err := session.NewSession(regionConfig)
				if err != nil {
					return nil, err
				}
				svc := ecs.New(regionSess)
				output, err := svc.ListClustersWithContext(ctx, &ecs.ListClustersInput{})
				if err != nil {
					return nil, err
				}

				if len(output.ClusterArns) > 0 {
					describeOutput, err := svc.DescribeClustersWithContext(ctx, &ecs.DescribeClustersInput{
						Clusters: output.ClusterArns,
					})
					if err != nil {
						return nil, err
					}
					allClusters = append(allClusters, describeOutput.Clusters...)
				}
			}
			return allClusters, nil
		},
		Process: func(output interface{}, err error, debug bool) []types.ScanResult {
			var results []types.ScanResult

			if err != nil {
				utils.HandleAWSError(debug, "ecs:ListClusters", err)
				return []types.ScanResult{
					{
						ServiceName: "ECS",
						MethodName:  "ecs:ListClusters",
						Error:       err,
						Timestamp:   time.Now(),
					},
				}
			}
			if clusters, ok := output.([]*ecs.Cluster); ok {
				if len(clusters) == 0 {
					utils.PrintResult(debug, "", "ecs:ListClusters", "No ECS clusters found.", nil)
				} else {
					for _, cluster := range clusters {
						clusterName := aws.StringValue(cluster.ClusterName)
						status := aws.StringValue(cluster.Status)
						runningTasks := aws.Int64Value(cluster.RunningTasksCount)
						pendingTasks := aws.Int64Value(cluster.PendingTasksCount)
						activeServices := aws.Int64Value(cluster.ActiveServicesCount)

						utils.PrintResult(debug, "", "ecs:ListClusters", fmt.Sprintf("ECS cluster: %s", utils.ColorizeItem(clusterName)), nil)
						utils.PrintResult(debug, "", "ecs:ListClusters", fmt.Sprintf("Status: %s", status), nil)
						utils.PrintResult(debug, "", "ecs:ListClusters", fmt.Sprintf("Running Tasks: %d", runningTasks), nil)
						utils.PrintResult(debug, "", "ecs:ListClusters", fmt.Sprintf("Pending Tasks: %d", pendingTasks), nil)
						utils.PrintResult(debug, "", "ecs:ListClusters", fmt.Sprintf("Active Services: %d", activeServices), nil)

						results = append(results, types.ScanResult{
							ServiceName:  "ECS",
							MethodName:   "ecs:ListClusters",
							ResourceType: "cluster",
							ResourceName: clusterName,
							Details: map[string]interface{}{
								"status":          status,
								"running_tasks":   runningTasks,
								"pending_tasks":   pendingTasks,
								"active_services": activeServices,
							},
							Timestamp: time.Now(),
						})
					}
				}
			}
			return results
		},
		ModuleName: types.DefaultModuleName,
	},
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL