AWS Lambdaとは?初心者向けにサービス内容やメリットを解説

AWS

2019.5.16

Topics

AWS Lambda(ラムダ)は、AWSが提供するサーバーレスコンピューティングのサービスです。最近はサーバーレスアーキテクチャも増えてきていますが、「サーバーレス」ということ自体、まだまだわかりにくい、実感しにくいと感じているユーザーも多いのではないでしょうか。今回は、AWS Lambdaの特徴やメリットについて紹介します。

AWS Lambda とは何か

AWS Lambdaの概要について見てみましょう。

AWS Lambdaとは

AWS Lambdaは、AWSの提供するサーバーレスコンピューティングサービスです。プログラムはクラウド上で実行され、ユーザー自身でサーバーや仮想サーバーを利用することはありません。汎用性が高く、さまざまなアプリケーションやサービスを実行できます。
サーバーやOSの構築や管理、セキュリティの設定、モニタリングなどはAWS Lambdaのサービスに含まれるため、ユーザーはサーバー構築や運用に関わる作業を行う必要がなく、実行するプログラムをLambda関数として作成・登録するだけです。

AWS LambdaとAmazon EC2の違い

Amazon EC2はクラウド上の仮想サーバーで、利用料金はサーバーを利用している時間単位で計算されます。利用量はダイナミックに変動させることが可能です。ユーザーはOS上にミドルウェアやアプリケーションをインストールし、メンテナンスも行う必要があります。
AWS Lambdaは、サーバーではなくプログラムを実行できる環境を提供し、利用料金はプログラムを実行している時間で計算されます。AWS Lambdaでは実行環境を提供しているので、ソフトウェアのインストールやメンテナンスなどをユーザーが行う必要はありません。用意するのは、動作させたいプログラムだけです。

何に使えるのか?

AWS Lambdaは、アプリケーション開発やバックエンドサービスなど、さまざまな用途に使うことができます。
特に「なんらかのイベントをトリガーにして予定しておいた処理を行う」という特徴を生かし、次のような用途に向いています。

  • イベントをトリガーにしたリアルタイムなファイル処理
  • ストリーミングデータの処理
  • サーバー監視、ログの監査
  • APIリクエストによるバックエンド処理
  • データの抽出、変換、リロード、別なシステムへの引き渡し
  •  アクセス数の増減の激しいWebアプリケーション
  •  バックアップ処理

AWS Lambdaの料金

AWS Lambdaの料金体系はどのようになっているか見てみましょう。

プログラムを実行した時間に対する従量制

AWS Lambdaは、プログラムのリクエスト数と、プログラムの実行が開始されてからコードが返されるまでの時間に対して課金されます。課金する時間は100 ミリ秒単位で切り上げられます。ただし、プログラムが実行されなければ料金はかかりません。
100 ミリ秒あたりの課金単価は、プログラムに割り当てたメモリの量により異なります。

無料利用枠

AWS Lambdaには、月間100万リクエストまで、最大320万秒までのコンピューティング時間の無料利用枠が適用されます。無料利用枠の量はプログラムに割り当てたメモリの量により異なり、1GBのファンクションで無料利用枠は40万秒までです。
AWS Lambdaの無料利用枠は無期限で提供されており、12か月たっても期限切れにはなりません。

AWS LambdaとAmazon EC2、どちらがお得?

AWS LambdaとAmazon EC2では、課金の仕組みが異なります。
Amazon EC2では、サーバーを利用していればアクセス数に関わらず課金されます。サーバー利用中に何回リクエストがあり、プログラムが実行されても、料金は変わりません。そのため、待機が必要な処理に向いています。
AWS Lambdaでは、プログラムへのリクエストやプログラムの実行時間について課金されるので、プログラムの実行回数が増えると料金が上がります。そのため、1日あたりの利用頻度が少ない処理に向いています。

AWS Lambdaのメリットは?

AWS Lambdaを使うと、ほかのクラウドコンピューティングサービスを利用したときに比べて、以下のメリットがあります。

コストダウン

AWS Lambdaでは、リクエストに応じてプログラムを実行した回数と時間によって料金が発生します。待機時間には課金されないので、処理内容によっては大きなコストダウンが可能です。

オートスケール

AWS Lambdaには自動スケーリング(オートスケール)機能があり、アクセス数や負荷に応じて自動的に利用するサーバーの数を増減します。これによって、ユーザーは、サーバーを意識することなくプログラムを実行することが可能です。

サーバーの構築や管理が不要

サーバーの運用は提供側のAWSが行うので、サーバーを管理する必要はありません。ソフトウェアのインストールやセキュリティの設定、ハードウェアのメンテナンスなども不要で、サーバーの構築や運用のための工数を削減できます。

高いセキュリティ

AWS Lambdaでは、ネットワーク上にサーバーが公開されておらず、プラットフォームの仕様も公開されていません。そのため脆弱性をついた攻撃がしづらくなっています。また高可用性を実現しているためメンテナンスによる定期的なダウンタイムもありません。

さまざまなプログラム言語に対応

AWS Lambdaは、Java、Node.js、C#、Python、Go、PowerShell、Rubyのプログラム言語に対応しています。また、Custom RuntimesではErlang、Elixir、COBOL、N|Solid、PHP、C++、Rustが使用可能です。

AWS Lambda を利用するときにはここに注意

AWS Lambdaを使うときには、次のような注意が必要です。

AWS Lambda だけでは使えない

AWS Lambda単体では何もできません。実際に運用する場合には、Amazon S3など、ほかのAWSサービスと組み合わせてシステムを構成する必要があります。
その場合、料金は利用したサービスすべての合計金額を支払うことになります。

固定費として予算計上できない

AWS Lambdaの料金は毎月アクセス数により変動します。そのため、固定費として予算計上することができません。

処理時間にばらつきがある

AWS Lambdaで Java を利用する場合、JVM の初期化などによりオーバーヘッドが発生することがあります。高速なレスポンスが必要な場合、起動時のオーバヘッドの少ない Go、Python、Node.js などのランタイムを検討しても良いかもしれません。

メモリや処理時間に制限がある

AWS Lambdaのメモリ割り当てでは、初期値で128MB、最大は3,008MBまでです。そのため、大量のメモリが必要な処理には利用できないこともあります。
AWS Lambdaでは、初期値の3秒から最大900秒で処理がタイムアウトになります。900秒以上かかる処理には利用できません。
これらの制限にかかるような用途であれば、Amazon EC2を使用したほうがよいでしょう。

自動的に再試行される場合がある

AWS Lambdaでは、処理が失敗したときに自動的に再試行する機能がついています。たとえば、S3からLambda関数を呼び出すと、処理が失敗したときに自動的に2回再試行されます。すると、同じ関数が3回実行されてしまうことになるので、その点を考慮して設計する必要があります。

サーバーを借りる場合と異なる障害対策が必要

AWS Lambdaだけでなく、サーバーレスコンピューティングからホスティング環境に移行することは簡単ではありません。万一AWSのサーバーレス環境に障害が起きた場合は、ほかのサーバーレス環境に移行することになります。そのため、障害対策としてはAWS Lambda以外のサーバーレス環境でも動作するよう設計しておくことも重要です。

AWS Lambdaの特徴を理解して利用しよう

AWS Lambdaは、サーバーレスでシステムを構築するサービスの代表です。サーバーレスシステムはこれまでの仮想サーバーとは使い方が大きく異なりますが、どちらにもメリットとデメリットがあります。AWS Lambdaの使い方を理解することで、より利用目的に合ったシステムを構築しましょう。

※本記事の内容につきましては2018年11月時点での情報です。

編集部

AWSを中心としたクラウドインフラやオンプレミス、ビッグデータ、機械学習などの技術ネタを中心にご紹介します。

Recommends

こちらもおすすめ

Special Topics

注目記事はこちら