我正在尝试通过以下方式从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
答案 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。