func NewFailedEvent()

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
}