捕获和解析 AWS RDSDataService 异常

Catching and Parsing AWS RDSDataService exceptions

我在 lambda 中使用 RDSDataService 在 Aurora Serverless 数据库中执行查询。一切正常时一切都很好,但是当出现错误时 运行 查询我得到这样的结果

An error occurred (BadRequestException) when calling the ExecuteStatement operation: ERROR: duplicate key value violates unique constraint "user_role_role_name_key" Detail: Key (role_name)=(Test3 ) already exists.

我正在使用除 Exception as e 之外的泛型捕获它,然后打印 e

问题:

  1. 我需要导入什么包来捕获 BadRequestException
  2. 我将如何解析它以提取细节部分?

AWS 确认在使用 Postgresql 时无法正确解析数据 API 异常的详细信息(请参阅 this github issue 了解更新)。

如果使用 Aurora 的 MySQL 版本,aurora-data-api 包实际上是 returns 更好的异常格式,因为可以解析 SQLSTATE 代码。我们可以在this internal function中看到解析的不同。


目前,使用数据 API 解析来自 Postgresql Aurora 数据库的异常的唯一方法是使用如下字符串比较:

if errorMessage.contains('a known substring of a specific exception message'):
   # Here we "know" the exception type