S3にtest.htmlをUPして
http://バケット名.s3.amazonaws.com/test.html
をブラウザで開きたい
必要なgemパッケージをインストール&修正
sudo gem i aws-s3
vim /usr/local/lib/ruby/gems/2.0.0/gems/sauberia-aws-s3-0.6.2.1254423624/lib/aws/s3/extensions.rb
84行目を以下に修正
gsub!( Regexp.new("[\x80-\xFF]", Regexp::EXTENDED, 'n')) { "%02X" % $&[0] }
続いて設定
sync_s3.yml
main:
access_key_id : アクセスキー
secret_access_key : シークレットキー
bucket_name : backet名
current_dir : /var/www/imgs/
sync_s3.rb
#!/usr/local/bin/ruby
# -*- encoding: utf-8 -*-
# ディレクトリ以下取得
require 'find'
require 'yaml'
require 'pp'
# s3
# http://amazon.rubyforge.org/doc/
require 'aws/s3'
include AWS::S3
# 初期設定
YAML_PATH = "./sync_s3.yml";
data = YAML.load_file(YAML_PATH); # パースする
ACCESS_KEY_ID = data['main']['access_key_id'];
SECRET_ACCESS_KEY = data['main']['secret_access_key'];
BUCKET_NAME = data['main']['bucket_name'];
CURRENT_DIR = data['main']['current_dir'];
# S3設定
Base.establish_connection!(
:access_key_id => ACCESS_KEY_ID,
:secret_access_key => SECRET_ACCESS_KEY,
:server => BUCKET_NAME + ".s3.amazonaws.com" # バケット名.s3.amazonaws.com
);
# S3への転送処理
S3Object.store(
'test.html', # アップロード先のファイル名
open(./test.html), # アップロードしたいローカルファイル
BUCKET_NAME, # バケット名
:access => :public_read # 全体に読み込み公開(他にも認証必須とかあります)
);
実行
sudo ./sync_s3.rb
もし
http://バケット名.s3.amazonaws.com/test.htmlではなく
http://バケット名.s3.amazonaws.com/test/test.html
にしたい場合は
S3Object.store(
'test/test.html', # アップロード先のファイル名
open(./test.html), # アップロードしたいローカルファイル
BUCKET_NAME, # バケット名
:access => :public_read # 全体に読み込み公開(他にも認証必須とかあります)
);
とするだけ!!
これで、シンプルにUPするまで出来るようになります。