如何在第三方项目中包含AWS服务错误代码



我正在开发一个模块,该模块内部使用AWS Java SDK客户端进行与EC2相关的API调用。

例如,我有一个要求,需要将ENI附加到我的实例中。这个api调用中可能的错误代码之一是AttachmentLimitExceeded,如果抛出这个特定错误,我想执行另一个逻辑。我知道我可以使用AmazonServiceException.getErrorCode()方法检索这个错误代码。但是,有没有一个jar包含了所有可能的错误代码字符串或异常类,我可以用它们来处理这些错误代码,比如说,根据每个错误代码有一个切换案例?

我不想像那样进行硬编码字符串匹配

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

由于此代码需要在AWS更改其错误代码时进行更改。在第三方项目中包含这些错误代码的标准方法是什么?

我相信没有这样的标准方法来处理这些错误代码。

这在很大程度上取决于您使用的服务。例如,上面提到的AttachmentLimitExceeded错误代码出现在具有底层AttachmentLimitExceededExceptionAWSSupportClient中,因此,如果您使用该服务的addAttachmentsToSet方法,则可以捕获它。

但不幸的是,AmazonEC2Client没有定义这样的特定异常(请参阅代码链接,并与上面的AWSSupportClient进行比较以获得证据)。它只有AmazonEC2ExceptiongetErrorCode返回String

具有预定义特定例外的客户端的另一个示例是AWSSimpleSystemsManagementClient。看看AWSSimpleSystemsManagementException的子类。


所以底线是,如果你感兴趣的服务没有为不同的错误类型定义特定的异常,你可以

  • 或者使用您提到的getErrorCode方法,这是可以理解的
  • 或者根本不依赖错误代码

这个选择很难,但您可能可以通过配置一些自定义请求重试策略来克服这个问题。

最新更新