ArgumentError:缺少必需的选项:key

时间:2019-08-22 10:22:10

标签: ruby amazon-s3

我正在尝试通过以下方式从S3存储桶中获取对象:

s3 = Aws::S3::Resource.new(
    region: ENV['AWS_REGION'],
    access_key_id: ENV['AWS_ACCESS_KEY_ID'],
    secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
)

obj = s3.bucket(ENV['AWS_S3_BUCKET_NAME']).object(args[:filename]).get # line causing error

确切的错误消息是:

  

ArgumentError:缺少必需的选项:key

1 个答案:

答案 0 :(得分:1)

错误消息可能会得到改善,但这意味着:

  

ArgumentError:缺少必需的参数:键

(“参数”和“参数”是同义词,有时“选项”会被混用,但“必需选项”会造成混淆。)

我正在重构一些代码,但没有注意到不再使用args[:filename] ...正在使用args哈希,但是没有使用:filename符号,所以它正在返回nil

> x = {}
 => {} 
> x.class
 => Hash 
> x[:blah]
 => nil 

当我将参数/参数/选项名称(args[:filename])更新为新重构的源代码中使用的名称后,它便起作用了。

顺便说一下,here's the line in the SDK that the error is coming from