in start-scan/main.go [35:83]
func startScan(scanspec ScanSpec) error {
s := session.Must(session.NewSession(&aws.Config{
Region: aws.String(scanspec.Region),
}))
svc := ecr.New(s)
scaninput := &ecr.StartImageScanInput{
RepositoryName: &scanspec.Repository,
RegistryId: &scanspec.RegistryID,
}
switch len(scanspec.Tags) {
case 0: // empty list of tags, scan all tags:
fmt.Printf("DEBUG:: scanning all tags for repo %v\n", scanspec.Repository)
lio, err := svc.ListImages(&ecr.ListImagesInput{
RepositoryName: &scanspec.Repository,
RegistryId: &scanspec.RegistryID,
Filter: &ecr.ListImagesFilter{
TagStatus: aws.String("TAGGED"),
},
})
if err != nil {
fmt.Println(err)
return err
}
for _, iid := range lio.ImageIds {
scaninput.ImageId = iid
result, err := svc.StartImageScan(scaninput)
if err != nil {
fmt.Println(err)
return err
}
fmt.Printf("DEBUG:: result for tag %v: %v\n", *iid.ImageTag, result)
}
default: // iterate over the tags specified in the config:
fmt.Printf("DEBUG:: scanning tags %v for repo %v\n", scanspec.Tags, scanspec.Repository)
for _, tag := range scanspec.Tags {
scaninput.ImageId = &ecr.ImageIdentifier{
ImageTag: aws.String(tag),
}
result, err := svc.StartImageScan(scaninput)
if err != nil {
fmt.Println(err)
return err
}
fmt.Printf("DEBUG:: result for tag %v: %v\n", tag, result)
}
}
return nil
}