Ruby 使用aws sdk v2将映像上载到S3
我在使用aws sdk文档的过程中度过了一段非常痛苦的时光,我遵循的所有链接似乎都过时了,无法使用 我正在寻找一个直接的实现示例,将图像文件上传到Ruby中的S3存储桶Ruby 使用aws sdk v2将映像上载到S3,ruby,aws-sdk,Ruby,Aws Sdk,我在使用aws sdk文档的过程中度过了一段非常痛苦的时光,我遵循的所有链接似乎都过时了,无法使用 我正在寻找一个直接的实现示例,将图像文件上传到Ruby中的S3存储桶 假设图像路径是screenshots/image.png 我想把它上传到bucketmy_bucket 在我的环境中生活着诚信 非常感谢您的建议。以下是如何将文件从磁盘上载到指定的存储桶和密钥: s3 = Aws::S3::Resource.new s3.bucket('my_bucket').object('key').u
- 假设图像路径是
screenshots/image.png
- 我想把它上传到bucket
my_bucket
- 在我的环境中生活着诚信
非常感谢您的建议。以下是如何将文件从磁盘上载到指定的存储桶和密钥:
s3 = Aws::S3::Resource.new
s3.bucket('my_bucket').object('key').upload_file('screenshots/image.png')
这是最简单的方法。您应该将“key”替换为希望存储在AmazonS3中的密钥。这将使用多部分上载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参考文档也在这里:当我遵循这些示例时,我会遇到一些错误,比如:
未定义的方法'write'(NoMethodError)
我最终使用了这个答案(),然后使用了object=bucket.object('image.png')
object.put(body:contents)
@EldadMor您已链接到v1文档。v2文档可以在这里找到:你是我的英雄!在过去的3-4个小时里,试图让这项工作白费力气。在aws sdk的v1中执行此操作非常简单,但v2似乎不必要地复杂。@mmichael我很好奇v2上传比v1更复杂的方式是什么?语法非常相似,不是吗?对于v1,您不必处理客户机或资源类,只需运行s3=AWS::s3.new
,然后运行s3.bucket['bucket\u name'].objects['key'].write(文件:'/path/to/file')
。实际上我说错了,v2版本并不复杂。我的意思是说v2文档更令人困惑。在新的文档中,没有任何地方向您展示如何执行答案中的步骤。如果他们这样做了,那么它就没有在一个页面上显示你所需要的一切那么清晰了。我同意,他们在v2文档中将知识水平提高到了初学者以上。是的,文档是一场噩梦。最好能更好地概述客户机和资源等常见用例