2

问题

我正在尝试确定 AWS ruby​​ SDK 返回的错误是服务器错误还是客户端错误。

使用gem 'aws-sdk-s3', '~> 1'.

查看文档:https ://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/Errors/ServiceError.html#code-instance_method指定返回错误级别 400~>599作为一个ServiceError. 但是如何识别子集:500~>599?

我通过以下检查捕获异常:

begin
  resource = Aws::S3::Resource.new(client: ...)
  bucket = resource.bucket(...)
  object = bucket.object(...).get
rescue Aws::S3::Errors::ServiceError => e
  puts 'server error' if e.<missing part> ??? 
end

我无法弄清楚“缺失的部分”是什么。

解决方案

Aws::S3::Errors::ServiceError有一个上下文参数,它本身有一个http_response

puts 'server error' if e.context.http_response[:status_code].between?(500, 599)
4

0 回答 0