AWS Lambdaとは?メリットや使い方を現役エンジニアが解説

初心者向けにAWS Lambdaについて解説しています。AWS Lambdaとは何をするものなのか、導入のメリットと使用できる言語、料金、基本の使い方について説明します。ぜひ参考にしてください。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

AWS Lambdaについて解説します。

なお本記事は、TechAcademyの法人向けIT・プログラミング研修での実績をもとに紹介しています。

 

田島悠介

今回は、ツール系に関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

AWS Lambdaについて詳しく説明していくね!

大石ゆかり

お願いします!

 

目次

 

AWS Lambdaとは

プログラムを動かすためには実行する環境を準備する必要があります。例えばPythonのプログラムを動かすためにはPythonをインストールしておく必要がありますし、Webサイトのようにインターネットから利用できるようにするためにはWebサーバなども構築する必要があります。これらの実行環境を全く気にせず、行いたいプログラムだけを作成、配置して実行できるのがAWS Lambdaです。

Lambdaは「ラムダ」と呼びます。この記事ではAWS Lambdaについてメリットやサポートされている言語、料金などの概要をお伝えしていきます。なお、後述しますが、AWS Lambdaは毎月の無料利用枠があります。無料で多くのプログラムを実行できるので、この記事を読んだら実際に動かして試してみると良いでしょう。

 

[PR] プログラミングで挫折しない学習方法を動画で公開中

AWS Lambdaを使うメリット

まずはメリットの前に、AWS Lambdaを使わずにWebサイトをクラウド環境に構築する手順を考えてみましょう。

Webサイトをクラウド環境に構築する手順

  1. クラウド環境(AWS EC2など)に仮想サーバを構築
  2. 仮想サーバ上に実行環境を構築。すなわちWebサーバやプログラミング言語の実行環境、ファイアウォール等のセキュリティソフトウェアのインストールと設定を実施する
  3. 継続的な運用保守が必要~ソフトウェアのアップデートの適用、セキュリティ対策、リソース管理(CPUやメモリ、SSDなど)
  4. 仮想サーバは稼働している間、ずっと時間単位で課金される
  5. Webサイトへのアクセスが増えた場合、仮想サーバのスペックを上げる必要がある

かなり大変ですね。これでもクラウド環境が出来る前に比べるとだいぶ楽にはなっていますが、最初の構築だけではなく運用保守も考えると相当な手間が想定されます。それではAWS Lambdaを使った場合はどうなるでしょうか。

AWS Lambdaを使う場合

  1. AWS Lambdaにソースコードを配置
  2. 関連するサービス(API Gateway や Route53 、 S3など)との連携設定
  3. 実行環境はAWS Lambdaが用意する。利用者は実行環境を意識しなくて良い。もちろん運用保守も不要
  4. AWS Lambdaはプログラムが実行された時間だけ課金される
  5. Webサイトへのアクセスが増えた場合、自動的にアクセス数に応じたプログラムが起動する

とても楽になるのがお分かり頂けると思います。つまり、これまでエンジニアが苦労してきた実行環境の構築や運用保守の手間が大幅に削減されることで、本来行いたい作業に集中できる、これがAWS Lambdaを使うメリットです。

 

サポートされている言語

AWS Lambdaでは多くのプログラミング言語を利用できます。既定でサポートしているのは以下の言語です。AWS Lambdaがサーバレスアーキテクチャを促進するサービスということもあり、バックエンドで利用されている言語が中心となっていることが分かります。

  • Java
  • Go
  • PowerShell
  • Node.js
  • C#
  • Python
  • Ruby

さらに、拡張機能(Lambdaレイヤー)を利用することで、以下の言語にも対応できるようになっています。

  • C++
  • Rust
  • Erlang
  • Elixir
  • COBOL
  • PHP

COBOL言語をサポートしたニュースは話題になりましたね。

AWS News Blog

 

AWS Lambdaの料金

AWS Lambdaの料金はかなり安く設定されています。また前記しましたが毎月の無料利用枠が設定されているため、個人レベルであればほとんどのプログラムを無料利用枠の中で実行できることでしょう。

  • 無料利用枠:1,000,000 件のリクエスト/月。400,000 GB-秒の実行時間(Lambda 関数に割り当てたメモリ量によって無料利用枠で実行できる時間が異なる)
  • リクエスト:1,000,000 件までは無料(上記の無料利用枠)。1,000,000 件を超えた以後は 1,000,000 件のリクエストあたり 0.2USD
  • 実行時間:400,000 GB-秒までは無料(上記の無料利用枠)。400,000 GB-秒を超えた以降はGB-秒あたり 0.0000166667USD

実行時間について、少し分かりづらいかもしれません。AWS Lambdaを実行する際は、実行する関数(プログラム)に対して使用するメモリ量を決定します。このメモリ量の1GBあたりの単価が 0.0000166667USD ということです。AWS Lambdaの料金ページに具体例が記載されています。

例えばメモリ使用量512MB(0.5GB)の場合、月間の無料利用枠は 800,000 秒となります。しかもプログラムが実行された時間だけ課金されますから、これだけあると十分でしょう。詳細はAWS Lambdaの料金ページを参考にしてください。

AWS Lambdaの料金

比較用として、AWS EC2オンデマンドインスタンスの料金表も掲載します。

AWS EC2 オンデマンドインスタンス料金

 

AWS Lambdaの使い方

最後にAWS Lambdaの使い方について具体例で確認していきましょう。公式サイトではユースケースとして具体的な活用事例が紹介されています。

AWS Lambda(公式サイト)

ここではより具体的に、AWS DevDay Tokyo 2018のセッションで紹介された「浸透するサーバーレス 実際に見るユースケースと実装パターン」をもとに主な使い方を確認していきたいと思います。

浸透するサーバーレス 実際に見るユースケースと実装パターン(SlideShare)

 

モバイルバックエンド/業務機能API

Webサービスや業務システムのバックエンドとして、処理の実行を担います。AWS Lambda はWebサービスや業務システムから、API Gatewayを通じて起動され、処理の結果を返します。処理としてはデータベースへの読み書き、業務ロジックの実行、他システムやAPIの呼び出しなどが考えられます。

既存システムの一部をAWS Lambda上に実装することも可能ですので、負荷がかかる部分を分散させるなど、多くの活用シーンが想定されます。

 

ログ処理/データ加工/ストリーミング

なんらかのデータを加工する処理です。AWS Lambdaはデータの到達をきっかけに動作します。具体的には以下のような処理が想定されます。

  • ログ処理:サーバやセンサー機器の大量のログを処理し、必要な情報を抽出。又はサマリーを作成して管理者に送付
  • 画像処理:大量の画像データのサムネイルを自動的に作成する、サイズを整える等。
  • AIに学習させるデータの前処理:いわゆる機械学習においては大量のデータの学習が必要となる。それらのデータの前処理を行う

 

機能/コンポーネント連携

業務ロジックをAWS Lambdaに切り出して実行する例が紹介されています。環境構築や運用保守が不要でアクセス数が増えても動的に対応できるため、負荷のかかる機能の切り出し等に向いています。

 

IoTデータ処理

IoTとはInternet of Thingsの略で、あらゆるモノがインターネットに接続され、相互に情報をやりとりする状態を表します。今後ますます増大すると予測されるIoT機器からの情報を処理したり、機械学習による予測など、幅広い処理をAWS Lambdaで行うことができます。トラフィックが安定しないセンサーデータの処理などは、特にAWS Lambda向きと言えるでしょう。

AWS Lambda は現在主流となっている仮想サーバ(EC2)などに対して次世代のクラウドと呼ばれています。概念的に分かりづらいかもしれませんが、クラウド上のサービスを組み合わせることで、仮想サーバを自前で構築するよりも安価に安定した環境を構築できるのがAWS Lambdaの魅力です。

 

監修してくれたメンター

太田和樹(おおたかずき)

ITベンチャー企業のPM兼エンジニア

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント。

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは、従来の講義型研修とは違い、実務を想定したカリキュラムで実践的スキルを短期間で確実に身につけられる法人向けオンラインIT・プログラミング研修を展開しています。

1名〜数百名規模・業界を問わず、500社以上の企業様の研修を実施しています。 受講生一人ひとりに現役エンジニアのメンターが付き、皆様のニーズにあったサポートを行います。学習時の「わからない」を確実に解消いたします。