ども、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
バケットを確認@目視
ホンマに S3 にアップロードされたんかいなってことで目視で確認。
おお。
せっかくなので…
軽量な mruby でも AWS の簡易的な操作が出来るのはちょっと嬉しいです。また、他の AWS サービスとの連携も出来たりしないかと期待を持たせてくれたりしますが、さまざまな gem を静的に組み込むことで mruby の魅力である軽量であるという点がどの程度減ってしまっている(軽量では無くなっている)のが気になります…。
と言いつつも…今日は眠いので寝ますが、今後はこの機能を利用して何かネタを考えてみたいと思います。
元記事はこちらです。
「ラズパイで mruby から Amazon S3 に mruby-aws-s3 使ってデータをアップしたりしてみる」