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
}