クラウド特捜部

新しいサービスを提案するAmazon Web Services

新しい実行環境を提供するLambda

 Lambda(ラムダ)は、AWS上のほかのサービスで特定のイベントがあった時に呼ばれる実行環境だ。例えば、Amazon S3上に画像がアップロードされた時に、その画像データを元にしてLambdaでサムネイルを自動的に作成する、といったことができる。また、Kinesisへのインプットがあった時に、ETL(Extract/Transform/Load)のプログラミング部分としてLambdaを呼び出して処理を行うこともできる。

 こういったことをやろうというのであれば、仮想サーバーを立てて実行環境を整え、ポーリングでAmazon S3を逐次監視して、画像がアップロードされた時にサムネイルを作る、といったことをすれば、同じようなことができる。しかしLambdaが便利なのは、ユーザーが実行環境をわざわざ整えなくても、Lambda自体がスケーラブルな実行環境を提供している点だ。

 このためユーザーは、実行できるコードをZipでパックしてアップロードするか、コンソールから直接コードをプログラミングするだけでいい。後は、Lambdaが自動的に実行してくれる。

 さらに管理者にとっては、Lambdaの課金形態が時間課金ではなく、リクエストされた数と実行時間で課金している点がメリットになるだろう。ユーザーがAmazon EC2で仮想マシンを立てて、実行環境を整え、ポーリングで実行していた場合よりも低コストで利用できる。現状では、月間100万リクエストまでは無料。100万リクエストを越えた場合は、さらに100万リクエストあたり0.2ドルとなっている。実行時間としては、100ms単位で課金されている。

 なお現在のLambdaでは、小さいプログラムが実行されることを前提としているため、プログラミング言語としてはJavaScript(Node.js)のみとなっている。さらに、メモリ容量はデフォルトでは128MB(64MBごとに設定可能、容量に応じてCPU能力も自動的に変動する)に設定された。

Lambdaは、JavaScriptをマイクロプログラムとして動作させる実行環境を提供している
Amazon S3、Kinesisなどのイベントから呼び出されて、処理を行う
Lambdaの対応するプログラミング言語は、JavaScriptのみ。メモリ容量はデフォルトで128MBとなっている
Lambdaの料金体系。Lambdaではリクエスト数、実行時間で料金が決まる。Amazon EC2などの仮想マシンを構成しなくても利用できる

 また、Lambdaのコード実行時間はデフォルトで3秒、最大60秒となっているため、もし60秒以上の処理がかかった場合はフェイルすることになる。

 このような仕様からも、Lambdaは複雑なプログラムを走らせるのではなく、非常に小さなプログラムを一つ一つ単体で動作させるプラットフォームといえる。

 Lambdaのプログラミング言語としてJavaScriptが採用されているのは、現状ではモバイル関連のサービスに利用されることが多い、とAWS側が思っているからだろう。もし、将来的にユーザーからのニーズがあれば、ほかのプログラミング言語(Ruby、Pythonなど)もLambdaで動作するように考えてはいるようだ。

 Lambdaに関しては、今後発展していく可能性が非常に高いと感じる。対応プログラミング言語がJavaScriptだけというのは心もとないが、素早い開発ができるだろう。将来的にRubyやPythonなどが採用されれば、より高度なプログラミングも可能になる。できれば、Lambdaで動作するJavaScriptのデバッグ環境や、Lambdaベースで開発されたプログラミングのマーケットプレイスなどが用意されると、開発者は既存のプログラムをうまく利用して、高度なサービスを簡単に開発可能になるだろう。

 現在、LambdaはUS East(Northern Virginia)、US West(Oregon)、EU(Ireland)の3カ所のリージョンでリミテッド プレビューが行われている。

Lambdaは、モバイルのアプリケーションなどで利用されると考えられている。ここでは、写真がDynamoDBに登録された時点でLambdaのマイクロプログラムを起動して、写真のリサイズなどを行ってAmazon S3に保存する

(山本 雅史)