2022年3月15日火曜日

(Ruby) fog でプロキシを設定する方法

(Ruby) fog でプロキシを設定する方法

概要

Ruby の fog でプロキシを使う方法を紹介します

環境

  • Ubuntu 18.04
  • Ruby 3.0.0p0
  • fog 2.2.0

準備

  • bundle init
  • vim Gemfile
gem "fog"
  • bundle install

サンプルコード

connection_options で proxy を指定すれば OK です

require 'fog/aws'

s3 = Fog::Storage.new({
  :provider => 'AWS',
  :region => 'your-region',
  :aws_access_key_id => 'xxx',
  :aws_secret_access_key => 'xxx',
  :use_iam_profile => false,
  :host => 'your.s3.host',
  :endpoint => 'https://your.s3.host',
  :aws_signature_version => 4,
  :connection_options => {
    :proxy => 'http://192.168.100.1:3128/',
  }
})

# save file from cloud storage
directory = s3.directories.get('bucket1')
file = directory.files.get('bucket1/hoge.txt')
File.open('/tmp/hoge.txt', 'w') do |f|
  f.write(file.body)
end

# upload to cloud storage from local
directory = s3.directories.get('bucket2')
file = directory.files.create(key: 'bucket2/hoge.txt')
File.open('/tmp/hoge.txt', 'r') do |f|
  file.body = f.read
  file.save
end

注意点

s3.directories を参照しようとすると endpoint で指定したアクセス先を参照せずにデフォルトの s3 を向いてしまうのでバケットの一覧は s3.directories では取得できませんでした

endpoint を指定した場合のバケットの一覧の取得はできないのかもしれません

参考サイト

0 件のコメント:

コメントを投稿