AWS Lambda

AWS LambdaはAmazon.comが提供しているAmazon Web Services (AWS) の1つで、イベントの発生に応じてプログラムを実行する環境を提供するクラウドコンピューティングサービスである。2014年11月に提供が開始された。
プログラムの実行に必要なサーバなどの環境が予め整えられているため、プログラムを作成して登録するだけで実行できるという特徴がある。同じAWSのサービスであるAmazon EC2は仮想化されたサーバを提供するのに対し、AWS Lambdaはプログラムの実行環境のみを提供するため、管理の手間が省かれるというのも特徴。プログラムの実行に必要なリソースは自動的に計算・割り当てされ、実行時間や回数などに応じて利用料金を支払う従量課金制となっている。また、実行するプログラムについては多数のプログラミング言語に対応している。
特徴.
AWS Lambdaはプログラムを登録するだけで実行できるようになる事が特徴で、同じクラウドコンピューティングサービスであるAmazon EC2と比較すると、AWS Lambdaは利用が容易である。Amazon EC2では仮想化されたサーバが提供されるため、そこにオペレーションシステムやアプリケーションをインストールするなどの環境構築の手間がかかり、それらの管理も行わなければならない。AWS Lambdaでは、用途をプログラム実行のみに絞ることで、利用者によるそれらの環境構築の手間を省いているのである。
登録したプログラムは「Lambda 関数」と呼ばれ、何らかのイベントをトリガーとして実行される。AWS Lambdaの登場前は、イベントをトリガーとするプログラムを実行するには、Amazon EC2を使い「イベントを待ち受けする」という常時実行のアプリケーションが必要だった。AWS Lambdaはイベントがトリガーとなりプログラムが実行されるため、イベントが発生していない状態ではプログラムの実行が不要になるのである。これは言い換えると「イベントの待ち受けをAWS Lambdaが代行している」とすることができる。Amazon API Gatewayを経由するHTTPリクエストや、Amazon S3やAmazon DynamoDBといったAWSの各種サービスにおける変更などの検知などがプログラムの実行トリガーとなる。
プログラムの実行に必要な処理能力は、プログラムの実行時に自動的に割り当てられるため、イベントの頻度が増加しても処理の速度は維持することが可能である。テレビゲームでは、年数回のイベントで一時的に大きな負荷がかかることがある場合にAWS Lambdaを使用することで、そのイベントのためだけにサーバを増強することを避けるために応用されているという。
Amazon CloudFront上でLambdaを実行する「Lambda@Edge」というサービスもある。これを使うと世界各地に置かれているCloudFrontのコンテンツデリバリネットワーク (CDN) 上でプログラムが実行されるため（エッジコンピューティング）、より利用者に近い場所でプログラムが動くことによる負荷分散・レスポンス向上が期待できる。
対応するプログラミング言語はJava、Go、PowerShell、Node.js、C#、Python、Rubyと多岐に渡る。サードパーティの物も含めフレームワーク、SDK、ライブラリなどを使用できる事を謳っており、これらを「Lambda Layer」というパッケージに一纏めにすることで複数のLambda 関数で共有することが可能である。
料金.
利用料金については前述の通り従量課金制であり、実際にプログラムを実行した回数と時間、Lambda関数に割り当てたメモリの量によって変化する。プログラムの実行時間は、プログラムの実行開始から処理の終了までの1 ミリ秒ごとの切り上げで計算される。無期限の無料利用枠が設けられており、1か月で100万回の実行回数、メモリの割り当て量に応じて最大320万秒の実行時間が無料で利用できる。