我在 Amazon AWS S3 中有一个存储桶,其中有一个名为users.csv
.
如何使用 Ruby 将该文件的内容从 S3 存储桶加载到内存中以便我可以解析它?
这是我的代码:
require 'aws-sdk'
s3 = Aws::S3::Resource.new(region: 'us-west-1')
resp = s3.list_objects(bucket: 'bucket-name', max_keys: 1)
resp.contents.each do |object|
puts #{object.value}
end
当我在 IRB 中尝试这个时,我得到:
struct Aws::S3::Types::Object key="users.csv", last_modified=2017-11-15 19:10:28 UTC, etag="\"9a3d50c07aa4aa6976037ce774294a26\"", size=101, storage_class="STANDARD", owner=struct Aws::S3::Types::Owner display_name="owner-name", id="42093cfa4ccb23a8156cdab8500a41a10bdbf90deebb0ee8a3b340dd1e0c3622"
我怎样才能解析内容users.csv
?
来自 AWS 文档:
将对象下载到内存中
对于小对象,获取对象并使其在 Ruby 进程中可用可能会很有用。如果你
不指定:target
下载时,会加载整个对象
到内存中成为一个 StringIO 对象。
def import_from_s3
#initiate the client
s3 = Aws::S3::Client.new({
region: region,
access_key_id: key_id,
secret_access_key: secret
})
#Get the object
resp = s3.get_object(bucket: bucket, key: key)
resp.body
#=> #<StringIO ...>
resp.body.read
#=> '...'
Call #read
or #string
在 StringIO 上获取字符串对象形式的主体。
欲了解更多信息,请参阅“使用适用于 Ruby 的 AWS 开发工具包从 Amazon S3 下载对象 https://aws.amazon.com/blogs/developer/downloading-objects-from-amazon-s3-using-the-aws-sdk-for-ruby/".
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)