AWS 再入門 AWS Lambda 編

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

毎度お馴染み流浪の動かしてみた & C 芸人の Fujimura です。

当エントリは Developers.IO で弊社 AWS チームによる『AWS サービス別 再入門アドベントカレンダー 2015』の 18 日目のエントリです。昨日 17 日目のエントリは藤本の『ElasticSearch Service』でした。

このアドベントカレンダーの企画は、普段 AWS サービスについて最新のネタ・深い/細かいテーマを主に書き連ねてきたメンバーの手によって、今一度初心に返って、基本的な部分を見つめ直してみよう、解説してみようというコンセプトが含まれています。

本日 18 日目のテーマは『AWS Lambda』です。

AWS Lambda とは?

公式ドキュメントより引用すると「コードを AWS クラウドで実行し、詳細な価格料金設定を提供する、バックエンドウェブ開発者向けの管理不要なコンピューティングプラットフォーム」となります。

具体的に例を挙げると、

  • AWS Lambda 登場以前
    • アプリケーションを実行するための EC2 などの計算資源を負荷に対する可用性や耐障害性を考慮して、設定 & 構築し、24/365 で監視する必要があった。
  • AWS Lambda 登場以後
    • アプリケーションを作成するだけで他の懸念事項については考慮する必要がなくなった。(計算資源の考慮はすべて AWS Lambda がやってくれる。)

といった感じになります。

他にも特徴としては以下のものがあります。

コスト効率

AWS Lambda は実行時間に対する課金となりため、非常にコスト効率が高いです。

非同期実行

AWS Lambda はイベントによる呼び出しで非同期実行することができます。例えば、「S3 バケットにファイルを置くというイベントにともない、そのファイルを加工する」ような処理をさせることができます。

イベントには AWS Lambda にイベントを発行するプッシュイベント (例 : S3 など) と、AWS Lambda がイベントの発生をポーリングするプルイベント (例 : DynamoDB など) があります。いずれのパターンでも失敗時のリトライをサポートしています。

また、スケジュールイベントという定期実行の仕組みも用意されています。

加えて、イベントとは別にリクエストレスポンスで AWS Lambda を同期実行する仕組みもあります。これは API Gateway を使用して HTTPS 経由で実行することで実現します。

言語サポート

AWS Lambda では以下の言語を使用することができます。

  • Node.js
  • Java
  • Python

他にも上記の言語で動作するインタプリタを用意すれば、トリッキーな方法となりますが、動作させることは可能です。

また、言語によってはランタイムが提供されています。

モニタリング

Amazon CloudWatch メトリックスにより AWS Lambda のモニタリングをすることが可能です。

バージョン管理

AWS Lambda ではバージョン管理機能が提供されているため、これにより運用の効率化を図ることができます。

モバイルバックエンドとしての活用

Mobile SDK も提供されているため、モバイルバックエンドとしても有効です。

あわせて読みたい

公式情報

Developers.IO

さいごに

以上、AWS Lambda についてさくっとまとめました。従来のコンピューティング環境よりも遥かに低コストで目的を達成することができるため、AWS が提供しているさまざまなサービスの中でも、とても有用なサービスのひとつに位置づけられると思います。

明日 (12/19) は あべいか の『CloudWatch』です。お楽しみに!