我在处理aws-sdk文档时遇到了很大的问题,我所跟随的所有链接看起来都过时且无用。
我正在寻找一个简单的实施示例,用Ruby将图像文件上传到S3存储桶中。
- 假设图像路径为
screenshots/image.png
- 我想将其上传到桶
my_bucket
- AWS凭证存储在我的环境中
非常感谢任何建议。
以下是如何将磁盘上的文件上传到指定的存储桶(bucket)和键(key)的方法:
s3 = Aws::S3::Resource.new
s3.bucket('my_bucket').object('key').upload_file('screenshots/image.png')
这是最简单的方法。您应该用Amazon S3中想要存储的键替换“key”。这将使用多部分上传API自动上传大文件,并会重试失败的部分。
如果您更喜欢始终使用PUT对象上传,则可以调用#put
或使用Aws::S3::Client
:
# using put
s3 = Aws::S3::Resource.new
File.open('screenshots/image.png', 'rb') do |file|
s3.bucket('my_bucket').object('key').put(body:file)
end
# using a client
s3 = Aws::S3::Client.new
File.open('screenshots/image.png', 'rb') do |file|
s3.put_object(bucket:'my_bucket', key:'key', body:file)
end
另外,v2 SDK的API参考文档在这里:http://docs.aws.amazon.com/sdkforruby/api/index.html
s3 = AWS::S3.new
,然后s3.buckets['bucket_name'].objects['key'].write(file: '/path/to/file')
即可。实际上,我说错了,v2版本并不更复杂。我的意思是v2文档更加混乱。新文档中没有任何地方向您展示如何执行您答案中的步骤。如果有的话,那么它不像v1中的说明那样清晰,其中在一个页面上显示了您需要的所有内容。 - vich
undefined method `write' for #<Aws::S3::Object bucket_name="my_bucket", key="image.png"> (NoMethodError)
。 - YoDK和
object.put(body: contents)```。 - YoDK