Как включить коды ошибок сервиса AWS в сторонний проект

java amazon-web-services amazon-ec2 aws-java-sdk

198 просмотра

1 ответ

659 Репутация автора

Я разрабатываю модуль, который использует клиент AWS Java SDK для выполнения вызовов API, связанных с EC2.

Например, у меня есть требование, где мне нужно прикрепить ENI к моему экземпляру. Одним из возможных кодов ошибок в этом вызове API является то AttachmentLimitExceeded, что я хочу выполнить другую логику, если эта конкретная ошибка выдается. Я знаю, что могу получить этот код ошибки, используя AmazonServiceException.getErrorCode()метод. Но есть ли jar, который включает в себя все возможные строки кодов ошибок или классы исключений, которые я могу использовать для обработки таких кодов ошибок и, скажем, иметь регистр переключения в зависимости от каждого кода ошибки?

Я не хочу делать сопоставление строк в жестком коде, как

AmazonServiceException.getErrorCode().equals("AttachmentLimitExceeded");

Поскольку этот код будет нуждаться в изменениях, как и когда AWS изменяет свои коды ошибок. Какой стандартный способ включения этих кодов ошибок в сторонний проект?

Автор: WillMcavoy Источник Размещён: 18.07.2016 07:33

Ответы (1)


0 плюса

4544 Репутация автора

Я считаю, что нет такого стандартного способа обработки этих кодов ошибок.

Это зависит от того, какой сервис вы используете. Например, упомянутый AttachmentLimitExceededкод ошибки появляется AWSSupportClientвместе с базовым кодом AttachmentLimitExceededException, так что вы можете его перехватить, если используете, например, addAttachmentsToSetметод из этой службы.

Но, к сожалению, AmazonEC2Clientне определяет такие конкретные исключения (см. Ссылку на код и сравните с приведенным AWSSupportClientвыше для доказательства). Это только AmazonEC2Exceptionс getErrorCodeвозвращением String.

Другим примером клиента с предопределенными конкретными исключениями является AWSSimpleSystemsManagementClient. Посмотрите на подклассы AWSSimpleSystemsManagementException.


Итак, суть в том, что если интересующий вас сервис не определяет конкретные исключения для разных типов ошибок, вы можете

  • либо используйте getErrorCodeметод, как вы упомянули, что по понятным причинам нежелательно
  • или не полагаться на коды ошибок вообще

Выбор сложен, но, вероятно, вы можете решить эту проблему, настроив некоторую настраиваемую политику повторения запросов.

Автор: laughedelic Размещён: 01.11.2016 11:59
Вопросы из категории :
32x32