in internal/aps.go [52:91]
func NewFailedEvent(err error) (handler.ProgressEvent, error) {
// log all errors in test mode
if os.Getenv("MODE") == "Test" {
log.Println(err)
} // otherwise, only log unhandled errors
var awsErr awserr.Error
if !errors.As(err, &awsErr) {
log.Printf("unhandled non awserr error: %v", err)
return generalFailedEvent, nil
}
handlerErr, ok := serviceErrorsToHandleErrors[awsErr.Code()]
if !ok {
log.Printf("unhandled awserr error: %v", err)
return generalFailedEvent, nil
}
message := awsErr.Message()
if awsErr.Code() == request.InvalidParameterErrCode {
message = awsErr.Error()
message = strings.TrimPrefix(message, "InvalidParameter: ")
// remove \n so validation errors are seen in Console / API
message = strings.Replace(message, "\n", "", -1)
// remove list notation
message = strings.Replace(message, ".- ", ". ", -1)
} else if awsErr.Code() == "TooManyRequestsException" {
// TooManyRequestsException doesn't have a message by default
// so the customer sees "Internal Failure" when message isn't set.
message = "API rate limit exceeded"
}
message = awsErr.Code() + ": " + message
return handler.ProgressEvent{
OperationStatus: handler.Failed,
Message: message,
HandlerErrorCode: handlerErr,
}, nil
}