Ruby から RiakCS にアクセスする

メモ。

aws-sdk を使ったら行けた。

# -*- encoding: utf-8 -*-
require 'logger'
require 'aws-sdk'

configs = {
  access_key_id:       'C_AHU4UXUQE9CBDSY8WX',
  secret_access_key:   'GR63vRcdenI1P99LPD8_ucE_RZhf9lpXwlyVxA==',
  s3_endpoin:          'localhost',
  proxy_uri:           'http://localhost:9090',
  use_ssl:             false,
#  logger:              Logger.new($stdout),
#  log_level:           'debug',
}
AWS::config(configs) 
connection = AWS::S3.new

buckets = connection.buckets['bucket_name']
# List all
items = []
buckets.objects.each do |obj|
  p obj.key
  items.push(obj.key)
end

# Get item
item = buckets.objects[items[0]]
File.open('./test.txt', 'wb') do |file|
  item.read do |chunk|
    file.write(chunk)
  end
end

Proxy の書き方が分からなくて困った…。
URI 形式で書けば行けた。


Boto みたいに詳細なドキュメントが見つけられなくて困った*1
結局 Fluent の S3 プラグインの実装を眺めて初めて Proxy の設定の仕方が分かった。
fluent-plugin-s3/out_s3.rb at master · fluent/fluent-plugin-s3 · GitHub

*1:自分の Ruby 力が低いのも大きい