4

在我的 Rails 3 应用程序中,我想将静态 JSON 数据导出到 Amazon S3 存储桶,以后可以通过来自所述应用程序的 AJAX 调用来检索和解析。

JSON 将从应用程序的数据库中生成。

我的设计要求可能只需要像 rake 任务这样的东西来启动到 S3 的导出。每次启动 rake 任务时,它都会覆盖文件。优选地,文件名将对应于生成 JSON 数据的记录的 ID 号。

有没有人有这方面的经验并且可以指出我正确的方向?

4

1 回答 1

6

这可以使用aws-sdk gem 来完成。

您的任务可以分为两个基本步骤:1)使用您的 json 数据生成一个临时本地文件,2)上传到 S3。一个非常基本的程序示例:

require 'aws-sdk'

# generate local file

record    = Record.find(1)
file_name = "my-json-data-#{record.id}"
local_file_path = "/tmp/#{file_name}"

File.open(local_file_path, 'w') do |file| 
  file.write(record.to_json)
end

# upload to S3

s3 = AWS::S3.new(
  :access_key_id => 'YOUR_ACCESS_KEY_ID',
  :secret_access_key => 'YOUR_SECRET_ACCESS_KEY')

bucket = s3.buckets['my-s3-bucket-key']

object = bucket.objects[file_name]

object.write(Pathname.new(local_file_path))

查看S3Object 文档了解更多信息。

于 2013-08-14T09:20:41.863 回答