func handler()

in summary/main.go [131:182]


func handler(request events.APIGatewayProxyRequest) (events.APIGatewayProxyResponse, error) {
	configbucket := os.Getenv("ECR_SCAN_CONFIG_BUCKET")
	fmt.Printf("DEBUG:: summary start\n")
	cfg, err := config.LoadDefaultConfig(context.TODO())
	if err != nil {
		fmt.Println(err)
		return serverError(err)
	}
	svc := s3.NewFromConfig(cfg)
	fmt.Printf("Scanning bucket %v for scan specs\n", configbucket)
	resp, err := svc.ListObjectsV2(context.TODO(), &s3.ListObjectsV2Input{
		Bucket: &configbucket,
	},
	)
	// resp, err := req.Send(context.TODO())
	if err != nil {
		fmt.Println(err)
		return serverError(err)
	}
	ssresult := ""
	for _, obj := range resp.Contents {
		fn := *obj.Key
		scanID := strings.TrimSuffix(fn, ".json")
		scanspec, err := fetchScanSpec(configbucket, scanID)
		if err != nil {
			fmt.Println(err)
			return serverError(err)
		}
		results, err := describeScan(scanspec)
		if err != nil {
			fmt.Println(err)
			return serverError(err)
		}
		for tag, result := range results {
			sevcount := ""
			for sev, count := range result.FindingSeverityCounts {
				sevcount += fmt.Sprintf(" %v: %v\n", sev, *count)
			}
			ssresult += fmt.Sprintf("Results for %v:%v in %v:\n%v\n\n", scanspec.Repository, tag, scanspec.Region, sevcount)
		}
	}

	fmt.Printf("DEBUG:: summary done\n")
	return events.APIGatewayProxyResponse{
		StatusCode: http.StatusOK,
		Headers: map[string]string{
			"Content-Type":                "application/json",
			"Access-Control-Allow-Origin": "*",
		},
		Body: ssresult,
	}, nil
}