鲁比是新来的,
我在Amazon AWS S3中有一个bucket,其中有一个名为users.csv
如何使用ruby将这个文件的内容从S3 bucket加载到内存中?
我希望在将此文件加载到内存中之后能够解析其内容。
这是我的代码:

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”,上次修改时间=2017-11-15 19:10:28 UTC,etag=“\”9A3D50C07AA4AA6976037CE774294A26“,”size=101,storage\u class=“standard”,owner=struct aws::s3::types::owner display\u name=“owner name”,id=“42093CFA4CB23A8156CDAB8500A41A10BDBF90DEEB0EE8A3B340DD1E0C3622”
如何解析users.csv中的内容?

最佳答案

从AWS文档中:
将对象下载到小对象的内存中,可以获得一个对象并在Ruby进程中使用它如果你
不要为下载指定:目标,将加载整个对象
进入一个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 on the StringIO to get the body as a String

反对。
有关详细信息,请在此处查看:https://aws.amazon.com/blogs/developer/downloading-objects-from-amazon-s3-using-the-aws-sdk-for-ruby/

07-24 09:38
查看更多