2013-04-14 2 views
1

Моя цель - сделать графики из данных в файлах excel, которые пользователи загрузили в Amazon S3.Доступ к данным, хранящимся в Amazon S3 через Rails

Я уже реализовал функции для загрузки файлов Excel с помощью Carrierwave, теперь мне нужно иметь доступ к данным и сделать их презентабельными для использования с графической библиотекой (Highcharts).

Задача, на которую я застряла, - это прямой доступ к данным в S3 через Rails. После того, как данные потянуты, должно быть достаточно простым манипулировать ими с помощью Highcharts.

Любые предложения были бы высоко оценены!

ответ

2

Вы можете использовать AWS SDK:

require 'aws-sdk' 

# retrieve the access key and secret key 
access_key_id = ENV["ACCESS_KEY_ID"] 
secret_access_key = ENV["SECRET_ACCESS_KEY"] 

# create an instance of the s3 client 
s3 = AWS::S3.new(access_key_id: access_key_id, secret_access_key: secret_access_key) 

# get the bucket 
bucket = s3.buckets['your-bucket-name'] 

# retrieve the objects 
bucket.objects.each do |object| 
    puts object.key 
    puts object.read 
end 
+0

Кроме того, будет ли с точки зрения безопасности для размещения информации ключа доступа непосредственно в функцию? – Anconia

+0

Извините, я не опубликовал полную версию. Ты прав; вы не должны вводить свои ключи непосредственно в код. Обычно я [прикрепляю их к переменной окружения] (http://stackoverflow.com/a/11300680/262125). Я уточню свой ответ. – LandonSchropp

0
s3 = Aws::S3::Client.new 
bucket = Aws::S3::Bucket.new('AWS_BUCKET NAME HERE') 
bucket.objects.each do |obj| 
    File.open("#{Rails.root}/#{obj.key}", 'wb') do |file| 
    s3.get_object(bucket:ENV[:AWS_BUCKET], key: obj.key , response_target: file) 
    end 
end 

ИЛИ

s3 = Aws::S3::Client.new 
s3.list_objects(bucket: 'AWS_BUCKET NAME HERE').each do |response| 
    response.contents.each do |obj| 
    File.open("#{Rails.root}/#{obj.key}", 'wb') do |file| 
     s3.get_object(bucket: 'AWS_BUCKET NAME HERE', key: obj.key , response_target: file) 
    end 
    end 
end 

Существует официальный AWS-SDK RUBY камень

AWS SDK ruby official documentation for version 2

Для конфигурации переменной окружения вы можете figaro или dotenv (for development environment) или установить в ~/.bashrc файл.

Примечание:

  1. Вам нужно создать S3 ведро и получить AWS_ACCESS_KEY_I D и AWS_SECRET_ACCESS_KEY.
  2. Перед развития вы можете проверить и получить доступ к данным s3 ковшеобразных с помощью google chrome s3 browser extenstion
  3. команду Run источника ~/.bashrc или . ~/.bashrc файл для отражения изменений, если вы сохраните там переменные ENV.

Code Reference

Смежные вопросы