それって自身の管理下にある静的な画像リソースに限られてしまいますよね(背景画像とか、CSSスプライト用の画像とか)。ユーザーの投稿した画像は管理外になってしまうし(VCS管理下に置かれない)、リサイズするスクリプト書いたりするのも面倒でした。Lambdaを使って、S3に上がった画像を自動的にリサイズ、最適化して戻してくれるスクリプト書きました。→S3に戻すという感じです。Lambdaの設定とかは下記のサイトとか参考にしました。今回はs3:ObjectCreated:Putのイベントを使います。それから、対象はjpg/pngのファイルのみです。gifはいいかなって。使い方などREADMEを見て頂くとわかりますが、リポジトリをcloneしてビルドしてzipアーカイブをLambdaにアップロードするだけです。あとは設定ファイルで幾つか挙動を変更できるようにしてます。アップロードされたら減色、リサイズして別bucketに送る一番想定される使い方です。イベント検知用のbucketに画像をPutして、処理した画像をメインのbucketに送る、という感じです。]}bucketは転送先のbucketです。指定されなかった場合はPutされたbucketを使います。reduceはPutされた画像自体を減色する設定です。directory以下に格納します。resizesは配列で、何枚でもサムネイルの作成が可能です。リサイズした画像ももちろん減色します。設定を書いたらmakeでアーカイブを作ってLambdaにアップロードしましょう。設定が上手く行っていれば、S3にアップロードすると減色されてサイズが小さくなった画像が指定の場所に作成されているはずです。注意点として、Lambdaがイベントを検知しているbucket内、指定ディレクトリに減色・リサイズ後のファイルを置く設定にすると、無限イベントループが起きます。configtestというコマンドをバンドルしてます。無限ループが起こりそうな設定の時は警告が出るようにしてますので、使ってみてください。その他、ハマったところなどLambdaのnodeはv0.10.26です。Linuxぽいので、Linux用のバイナリをバンドルして実行するように。よってMacでは開発しづらく、初期はUbuntuでやってた一回無限イベントやらかして多額の請求が来ないかびびってた(大丈夫そう)nodeのStream初めてちゃんと使った。難しいという感じですかね。よろしければMITライセンスの範囲でお使いくださいませ。PRもお待ちしております。2015node.js。