func()

in internal/resources/fetching/fetchers/aws/iam_fetcher.go [59:109]


func (f IAMFetcher) Fetch(ctx context.Context, cycleMetadata cycle.Metadata) error {
	f.log.Debug("Starting IAMFetcher.Fetch")
	iamResources := make([]awslib.AwsResource, 0)

	pwdPolicy, err := f.iamProvider.GetPasswordPolicy(ctx)
	if err != nil {
		f.log.Errorf("Unable to fetch PasswordPolicy, error: %v", err)
	} else {
		iamResources = append(iamResources, pwdPolicy)
	}

	users, err := f.iamProvider.GetUsers(ctx)
	if err != nil {
		f.log.Errorf("Unable to fetch IAM users, error: %v", err)
	} else {
		iamResources = append(iamResources, users...)
	}

	policies, err := f.iamProvider.GetPolicies(ctx)
	if err != nil {
		f.log.Errorf("Unable to fetch IAM policies, error: %v", err)
	} else {
		iamResources = append(iamResources, policies...)
	}

	serverCertificates, err := f.iamProvider.ListServerCertificates(ctx)
	if err != nil {
		f.log.Errorf("Unable to fetch IAM server certificates, error: %v", err)
	} else {
		iamResources = append(iamResources, serverCertificates)
	}

	accessAnalyzers, err := f.iamProvider.GetAccessAnalyzers(ctx)
	if err != nil {
		f.log.Errorf("Unable to fetch access access analyzers, error: %v", err)
	} else {
		iamResources = append(iamResources, accessAnalyzers)
	}

	for _, iamResource := range iamResources {
		f.resourceCh <- fetching.ResourceInfo{
			Resource: IAMResource{
				AwsResource: iamResource,
				identity:    f.cloudIdentity,
			},
			CycleMetadata: cycleMetadata,
		}
	}

	return nil
}