捕获和解析 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
。
问题:
- 我需要导入什么包来捕获 BadRequestException
- 我将如何解析它以提取细节部分?
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
我在 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
。
问题:
- 我需要导入什么包来捕获 BadRequestException
- 我将如何解析它以提取细节部分?
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