in aws-iot-fleetmetric/src/main/java/com/amazonaws/iot/fleetmetric/Translator.java [51:80]
static HandlerErrorCode translateExceptionToErrorCode(Exception e, Logger logger) {
logger.log(String.format("Translating exception \"%s\", stack trace: %s",
e.getMessage(), ExceptionUtils.getStackTrace(e)));
// For Throttling and InternalFailure, we want CFN to retry, and it will do so based on the error code.
// Reference with Retriable/Terminal in comments for each: https://tinyurl.com/y378qdno
if (e instanceof ResourceAlreadyExistsException) {
return HandlerErrorCode.AlreadyExists;
} else if (e instanceof InvalidRequestException) {
return HandlerErrorCode.InvalidRequest;
} else if (e instanceof LimitExceededException) {
return HandlerErrorCode.ServiceLimitExceeded;
} else if (e instanceof UnauthorizedException) {
return HandlerErrorCode.AccessDenied;
} else if (e instanceof InternalFailureException) {
return HandlerErrorCode.InternalFailure;
} else if (e instanceof ThrottlingException) {
return HandlerErrorCode.Throttling;
} else if (e instanceof ResourceNotFoundException) {
return HandlerErrorCode.NotFound;
} else if (e instanceof IotException && ((IotException) e).statusCode() == 403) {
return HandlerErrorCode.AccessDenied;
} else if (e instanceof IndexNotReadyException) {
return HandlerErrorCode.GeneralServiceException;
} else {
logger.log(String.format("Unexpected exception \"%s\"", e.getMessage()));
// Any other exception at this point is unexpected.k
return HandlerErrorCode.InternalFailure;
}
}