ども、mruby 教信者の cloudpackかっぱ (@inokara) です。

はじめに

世間ではアブラカタブラ、ラムダカタブラと AWS Lambda がホットになってきており、既に Preview の権利を得た方々が楽しそうに Lambda(ランバダ※違います)している姿を指を加えて見ている状況です…。(←申し込んだけどまだ来ない)そういう状況で mruby-aws-s3 という mrbgems を見つけたので試してみました。軽量な mruby を使って Amazon S3 にファイルアップが出来るというのはちょっと嬉しいかもしれませんし、直接 S3 にアクセスすることでデータ(ログ収集)がラズパイ等のデバイスで手軽に行えるのは用途が広がりそうです。

ビルド

関連パッケージ

今回もラズパイで動かしますが、まずはビルドを行うにあたって以下のパッケージを入れておきましょう。

sudo apt-get install libtool
sudo apt-get install automake

関連する mrbgems を…

これを探すのが以外に面倒くさい、ごめん臭い。

 conf.gem :git => 'https://github.com/luisbebop/mruby-polarssl.git'
  conf.gem :git => 'https://github.com/iij/mruby-mtest.git'
  conf.gem :git => 'https://github.com/iij/mruby-digest.git'
  conf.gem :git => 'https://github.com/mattn/mruby-uv.git'
  conf.gem :git => 'https://github.com/iij/mruby-aws-s3.git'

ビルド

make

これが長いよ…おっかさん。

インストール

cp -rfp ./bin/* /usr/local/mruby/bin/

あらかじめ /usr/local/mruby/bin/ にパスを通しておきましょう。

動作確認

example

examples ディレクトリにあったスクリプトを利用させて頂きました。

AWSAccessKeyId = '(AccessKey for AWS)'
AWSSecretAccessKey = '(SecretKey for AWS)'
AWSBucket = "mruby"

aws = AWS::S3.new(AWSAccessKeyId, AWSSecretAccessKey)

aws.set_bucket(AWSBucket)

# PUT /Hellow.txt
response = aws.upload("/Hello.txt", "Hello! mruby " + Time.now.to_s)
if response.code.to_i == 200
  puts "Upload: success"
else
  puts "Error code = " + response.code.to_s
end

# GET /Hello.txt
response = aws.download("/Hello.txt")
if response.code.to_i == 200
  puts "Download: success"
  puts response.body
else
  puts "Error code = " + response.code.to_s
  puts "Response:"
  puts response.body
end

このスクリプトを test.rb というファイル名で保存しておいて以下のように実行します。(アクセスキーとシークレットアクセスキー、バケット名は任意の名前を指定しましょう。)

mruby test.rb

以下のように出力されました。
Raspberry Pi と mruby で Amazon S3 にアップロードする: 動作確認(出力結果)

バケットを確認@目視

ホンマに S3 にアップロードされたんかいなってことで目視で確認。
Raspberry Pi と mruby で Amazon S3 にアップロードする: 動作確認(コンソールから目視で)

中身も確認や。
Raspberry Pi と mruby で Amazon S3 にアップロードする: 動作確認(内容も確認)

おお。

せっかくなので…

軽量な mruby でも AWS の簡易的な操作が出来るのはちょっと嬉しいです。また、他の AWS サービスとの連携も出来たりしないかと期待を持たせてくれたりしますが、さまざまな gem を静的に組み込むことで mruby の魅力である軽量であるという点がどの程度減ってしまっている(軽量では無くなっている)のが気になります…。

と言いつつも…今日は眠いので寝ますが、今後はこの機能を利用して何かネタを考えてみたいと思います。

元記事はこちらです。
ラズパイで mruby から Amazon S3 に mruby-aws-s3 使ってデータをアップしたりしてみる