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

时间:2016-07-18 19:33:10

标签: java amazon-web-services amazon-ec2 aws-java-sdk

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

E.g。我有一个要求,我需要将ENI附加到我的实例。此api调用中可能的错误代码之一是AttachmentLimitExceeded,如果抛出此特定错误,我想执行另一个逻辑。我知道我可以使用AmazonServiceException.getErrorCode()方法检索此错误代码。但是,是否有任何jar包含所有可能的错误代码字符串或异常类,我可以使用它来处理这样的错误代码,并且假设根据每个错误代码都有一个switch case?

想要像

那样进行硬编码字符串匹配
AmazonServiceException.getErrorCode().equals("AttachmentLimitExceeded");

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

1 个答案:

答案 0 :(得分:0)

我认为没有这种处理这些错误代码的标准方法。

这很大程度上取决于您使用的服务。例如,提到的import pandas as pd df = pd.DataFrame([['A', 1], ['B', 2.5], ['C', 3.0], ['D', 3.2]], columns=['label', 'value']) df['is_it_whole'] = df['value'].map(lambda x: x.is_integer()) df label value is_it_whole 0 A 1.0 True 1 B 2.5 False 2 C 3.0 True 3 D 3.2 False 错误代码显示在AWSSupportClient中,其中包含基础AttachmentLimitExceededException,因此如果您使用的是addAttachmentsToSet方法,则可以捕获它这项服务。

但遗憾的是,AmazonEC2Client未定义此类特定异常(请参阅代码链接并与上述AttachmentLimitExceeded进行比较以获取证据)。它只有AmazonEC2ExceptiongetErrorCode返回AWSSupportClient

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

所以最重要的是,如果你感兴趣的服务没有为不同的错误类型定义特定的例外,你可以

  • 使用你提到的String方法,这是不可理解的
  • 或者完全不依赖于错误代码

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