その他
    ホーム 技術発信 DoRuby Fog を利用した IDCF オブジェクトストレージ へのアップロード・ダウンロード
    Fog を利用した IDCF オブジェクトストレージ へのアップロード・ダウンロード
     

    Fog を利用した IDCF オブジェクトストレージ へのアップロード・ダウンロード

    この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

    Railsで画像アップロード等を行うにはCarrierWaveを使用するのが便利であるが、これは特定のモデルに紐づくファイルをアップロードする事が基本的な使用方法である。 それに対して、ただ単純に(特定のモデルに紐付かない)ファイルをIDCFオブジェクトストレージへアップロードしたりIDCFオブジェクトストレージからダウンロードしたりするという用途においては、 Gem「fog」を利用すれば簡単に実装できるようになる。

    Gemfile

    gem 'fog'
    

    アップロード方法

    file_uploader = Fog::Storage.new(
      provider:               'AWS', # IDCFでもAWSと記述
      path_style:             true,
      host:                   'ds.jp-east.idcfcloud.com',
      port:                   443,
      scheme:                 'https',
      aws_access_key_id:      'XXX', # アクセスキー
      aws_secret_access_key:  ENV['SECRET_IDCF_SECRET_KEY'],
      region:                 'ap-northeast-1', # 東京
      aws_signature_version:  2
    )
    
    file_uploader.put_object(
      'XXX', # バケット名
      '/tmp/xxx/xxx.xxx', # ファイルのフルパス
     'XXX' # ファイル内容(パラメータで受け取る場合は、そのままparams[:xxx]等)
    )
    

    ダウンロード方法

    file_uploader = ... # アップロード方法と同内容なので省略
    
    File.open(file_full_path, 'w') do |f|
      f.write file_uploader.get_object(
        'XXX', # バケット名
        '/tmp/xxx/xxx.xxx' # ファイルのフルパス
      ).data[:body]
    end