func startScan()

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
}