satococoa's blog

主にサーバーサイド、Web 系エンジニアのブログです。Go, Ruby, React, GCP, ...etc.

RubyでS3を使ってみる

AWS始めましたのエントリで書いたように、上記の本のサンプルコードがPHPだったのでRubyから扱う方法を練習してみました。
Rubyから扱う場合はRightAwsというgemが良さそうだったので、使ってみました。

例えばバケットを作るには以下のようなコードとなります。
S3 = RightAws::S3.new(ACCESS, SECRET, :server => 's3-ap-southeast-1.amazonaws.com')
bucket = S3.bucket(params[:bucket], true, nil, :location => 'ap-southeast-1')
ACCESS, SECRETはそれぞれ取得したアクセスキーと秘密キーです。また、locationとしてシンガポールのリージョンを選んでいます。1行目で:serverを指定しないとうまくバケットにファイルがアップロードできないようで、しばらくハマりました。

そして、バケットにファイルをアップロードするのは以下のコード。
key = @bucket.put(file[:filename], file[:tempfile], {},
                  'public-read-write', {'content-type' => file[:type]})
シンプルですね。

ちなみにサムネイルの作成にはMiniMagickを使ってみました。ImageMagickbrewで入れれば楽々です。
$ brew install imagemagick
$ gem install mini_magick
今回書いたコードはこちら(sinatraです):https://github.com/satococoa/aws

CloudFrontまでは使いませんでしたが、S3の操作はなんとなくつかめました。
次はEC2を使ってみようと思います。
手始めにこのブログを載せてみるか、それとも今回作成したコードを載せてみるか・・・。