driftctl/pkg/remote/resource_enumeration_error_...

36 lines
836 B
Go

package remote
import (
"fmt"
remoteerror "github.com/cloudskiff/driftctl/pkg/remote/error"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/cloudskiff/driftctl/pkg/alerter"
"github.com/sirupsen/logrus"
)
func HandleResourceEnumerationError(err error, alertr *alerter.Alerter) error {
listError, ok := err.(*remoteerror.ResourceEnumerationError)
if !ok {
return err
}
reqerr, ok := listError.RootCause().(awserr.RequestFailure)
if !ok {
return err
}
if reqerr.StatusCode() == 403 {
message := fmt.Sprintf("Ignoring %s from drift calculation: Listing %s is forbidden.", listError.SupplierType(), listError.ListedTypeError())
logrus.Debugf(message)
alertr.SendAlert(listError.SupplierType(), alerter.Alert{
Message: message,
ShouldIgnoreResource: true,
})
return nil
}
return err
}