概要
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 件のコメント:
コメントを投稿