in pkg/errors/errors.go [61:107]
func HandleCredentialFetchingError(ctx context.Context, err error) (string, int) {
log := logger.FromContext(ctx)
defer func() {
log.Errorf("Error fetching credentials: %v", err)
}()
// first try to get validation errors, if there is one short-circuit and return
var hcpe HttpCodeProvidingError
if errors.As(err, &hcpe) {
return err.Error(), hcpe.HttpStatus()
}
// grab some metadata about the service failure if there is any
var oe *smithy.OperationError
if errors.As(err, &oe) {
log = log.WithFields(logrus.Fields{
"service": oe.Service(),
"operation": oe.Operation(),
})
}
var errMsg []string
httpCode := http.StatusInternalServerError
var re *awshttp.ResponseError
if errors.As(err, &re) {
log = log.WithFields(logrus.Fields{
"request-id": re.ServiceRequestID(),
})
// response error does not necessarily imply that there was an HTTP code response
if re.HTTPStatusCode() != 0 {
httpCode = re.HTTPStatusCode()
}
errMsg = append(errMsg, "["+re.RequestID+"]")
}
var ae smithy.APIError
if errors.As(err, &ae) {
errMsg = append(errMsg, fmt.Sprintf("(%s): %s, fault: %s", ae.ErrorCode(), ae.ErrorMessage(), ae.ErrorFault().String()))
}
if len(errMsg) == 0 {
return err.Error(), httpCode
} else {
return strings.Join(errMsg, ": "), httpCode
}
}