• 会員限定
  • 2021/09/01 掲載

AWS Lambdaの使い方をやさしく解説、関数実行や権限設定の基本を押さえる

連載:やさしく学ぶAWS入門

  • icon-mail
  • icon-print
  • icon-hatena
  • icon-line
  • icon-close-snsbtns
記事をお気に入りリストに登録することができます。
AWS Lambdaは、AWSが提供するサーバレスコンピューティングサービスの1つです。活用することで、利用者はインフラ管理を気にすることなく、コード開発に集中できます。本稿では、AWS Lambdaの特徴、料金体系や責任範囲、利用方法まで詳しく説明していきます。説明の中にはAWSのほかのサービスへの言及もありますが、ぜひ過去の連載とあわせて読んで、学びを深めましょう。

NRIネットコム 上野 史瑛

NRIネットコム 上野 史瑛

AWSを中心としたエンタープライズシステム基盤の設計、構築、運用を経験。AWS認定試験は12個全て取得している。認定資格や社外への活動がAWSにも認められ、2020年にAPN Ambassadors、AWS Top Engineers、ALL AWS Certifications Engineerに選出されている。

photo
AWS Lambdaを利用する上での勘所を解説する
(Photo/Getty Images)

連載一覧
第1回:AWS入門
第2回:Amazon EC2入門
第3回:Amazon VPC入門
第4回:Amazon S3入門
第5回:Amazon RDS入門
第6回:AWS Lambda入門

AWS Lambdaとは

 AWS Lambda(以下Lambda)はサーバレスコンピューティングサービスです。オペレーティングシステム(以下OS)などのインフラストラクチャの管理が不要で、利用者はプログラムコードを準備し、Lambdaにアップロードするだけで実行できます。

 サーバレスという言葉になっていますが、実際に稼働するサーバが無いというわけではなく、AWS側で実行基盤が管理されるため利用者の管理するサーバが無いということになります。利用者はインフラ部分の管理をAWS側に任せられるため、ビジネスロジックに関わるコード開発に集中できます。

 現時点でLambdaは次の言語をサポートしています。
  • Node.js
  • Python
  • Ruby
  • Go
  • Java
  • PowerShell
  • C#

 これ以外の言語を使用する場合は、カスタムランタイムという機能を使用して実装可能です。また、2020年12月にはコンテナイメージのサポートも開始し、利用者が作成したコンテナイメージをLambdaへデプロイできるようになっています。

AWS Lambdaを利用するメリット

 OSやプラットフォームの管理をAWSに任せることができるため、次のような利点があります。

・セキュリティ
 OSなどのインフラストラクチャのパッチ適用など、実行基盤のセキュリティはAWSで管理され、利用者は自分が書いたコードのみ責任を持って開発すれば良いため、より簡単にセキュアな実行環境を実現できます。

・コスト
 Lambdaではコードが実行される時間1ミリ秒ごとに課金されます。これまで紹介したAmazon EC2(以下EC2)やAmazon RDS(以下RDS)では、たとえ処理が行われていなくても起動している時間分料金が発生しますが、Lambdaでは実行していない時間は料金が発生しないため、コスト削減につながりやすいです。


・可用性
 Amazon VPCで紹介したように、AWSには複数の物理的に独立したアベイラビリティーゾーン(以下AZ)がありますが、LambdaではAWS管理のもと複数のAZに渡って関数が実行されます。利用者が意識せず高可用性、耐障害性が保たれています。


・拡張性
 Lambdaは複数の処理を受けると、自動的に処理用のAWSが管理するインスタンスが立ち上がり、自動拡張されます。東京リージョンでは同時実行数が最大1000となっており、この値は申請により引き上げることも可能です。

AWS LambdaとAmazon EC2との違い

 EC2と比較すると次のようなイメージとなります。
画像
EC2とLambdaの利用イメージ

 Lambdaの利点だけ聞くと、EC2は使用せずにLambdaだけ利用したほうが良いと思うかもしれません。実際には、すべてのユースケースでLambdaを使用するというのは難しいです。EC2はLambdaに比べて次のような利点を持ちます。

  • オンプレミス上のアプリケーションをAWSへ移行する場合、OS設定などそのまま移行しやすい。
  • インスタンスタイプやOS、ネットワークなどを自由に設定できるという柔軟性がある。
  • 大量のトラフィックやアクセスを常時処理する場合、EC2のほうが安くなる場合もある。
  • EC2ではサーバにプログラムをデプロイ(配置)するという従来の方式で開発を進められる。LambdaにはAWS独自の設定方法や開発方法があるため、初心者は難しい場合もある。

 稼働するアプリケーションの状況、開発する組織のスキルなど、場面に応じて適切なサービスを選択することが重要です。

Lambda関数の作成と実行

 Lambdaでは、「関数」という単位でプログラムコードを管理し、処理も関数単位で実行します。

 関数の作成は、複数のツールから可能で、AWSマネジメントコンソールの画面上からも作成できます。ここではPythonを例に、関数の作成方法を見ていきます。

 Lambdaの画面から関数の作成を選ぶと次の画面が表示されます。任意の関数名を指定して、使用したいランタイム(プログラム言語とバージョン)を選択します。今回はPython 3.8を選択します。

画像
関数の作成

 関数を作成すると、画面上にデフォルトのプログラムコードが表示され、そのまま画面上で編集できます。

画像
コードの編集画面

 作成した関数は、画面上からテスト実行が可能です。画面上に表示されているTestボタンを押下し、関数に渡すデータをJSON形式で指定します。そのまま作成を押してテストイベントを作成します(今回実行するデフォルトのコードではこのJSONデータの中身は使用しません)。

画像
テストイベント

 再度コード編集画面に戻ってTestボタンを押下すると関数が実行され、実行結果が表示されます。今回はデフォルトコードのままで、「Hello from Lambda!」という文字列を含むデータを表示する関数を実行しています。

画像
テストイベントの実行結果

 関数を画面上から作成し、プログラムコードを書くだけで実行ができました。このように環境の準備をせず簡単に実行できる点がLambdaの魅力の1つです。なお、画面上でコードの編集ができるのはPythonやNode.jsなど、コンパイルが不要な一部の言語のみとなります。

AWS Lambdaを他のサービスと連携して実行する

 テスト実行では、利用者が指定したJSON情報をインプットとして関数を手動実行しました。ユーザーのアクセスやデータ連携など、何かをきっかけに自動的にLambda関数を実行する場合はほかのAWSサービスと連携します。いくつか例を見ていきます。

・ユーザーのリクエストに応じてLambda関数を実行する
 Amazon API Gateway(以下API Gateway)というサービスとLambdaを組み合わせることで、ユーザーのHTTPリクエストを契機(トリガー)としてLambda関数を実行できます。これにより簡単なWEBアプリケーションが作成可能です。

 API GatewayがユーザーからHTTPリクエストを受け取ると、API GatewayはGETなどのHTTPメソッドや、/apiなどのリクエストパスの情報を含むJSONデータをLambda関数に渡して実行します。Lambda関数で応答内容を返すようコードを書いておくことで、API Gateway経由で応答を返します。WEBブラウザであれば、WEBブラウザの画面上にレスポンスデータが表示されます。

画像
API GatewayとLambdaによるWEBアプリケーション

・S3データ格納時に自動処理を行う
 Amazon S3(以下S3)バケットにデータが格納されたら、格納されたデータに対してLambdaで自動処理を行うこともできます。たとえばデータに含まれる情報を加工して別のS3バケットに格納するといった処理が可能です。

 この場合もS3バケットやデータ情報がJSONとしてLambda関数に渡されるため、関数のコードでその情報を元にデータを処理します。

画像
S3とLambdaを使用したデータ自動処理

・定期的にLambda関数を実行する
 毎日12:00など、決まった時間に処理を実行したい場合は、Amazon EventBridgeというサービスとLambdaを組み合わせることで実現できます。

 Amazon EventBridge側にルールという形で日次実行する定義を設定しておき、ターゲットにLambda関数を指定することで定期実行が可能です。

 たとえば毎日決まった時間にEC2を停止または起動するといった運用もこの構成で可能です。

画像
Lambda関数の定期実行

 3つの構成を例として紹介しましたが、実際には他のサービスも含むさまざまな構成パターンでLambdaは実行されます。代表的な構成例としてこういった使い方があると理解してください。

【次ページ】AWS Lambdaで利用者が決定するパラメータ、利用料金や責任範囲の解説も

関連タグ

関連コンテンツ

あなたの投稿

    PR

    PR

    PR

処理に失敗しました

人気のタグ

投稿したコメントを
削除しますか?

あなたの投稿コメント編集

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

通報

このコメントについて、
問題の詳細をお知らせください。

ビジネス+ITルール違反についてはこちらをご覧ください。

通報

報告が完了しました

コメントを投稿することにより自身の基本情報
本メディアサイトに公開されます

必要な会員情報が不足しています。

必要な会員情報をすべてご登録いただくまでは、以下のサービスがご利用いただけません。

  • 記事閲覧数の制限なし

  • [お気に入り]ボタンでの記事取り置き

  • タグフォロー

  • おすすめコンテンツの表示

詳細情報を入力して
会員限定機能を使いこなしましょう!

詳細はこちら 詳細情報の入力へ進む
報告が完了しました

」さんのブロックを解除しますか?

ブロックを解除するとお互いにフォローすることができるようになります。

ブロック

さんはあなたをフォローしたりあなたのコメントにいいねできなくなります。また、さんからの通知は表示されなくなります。

さんをブロックしますか?

ブロック

ブロックが完了しました

ブロック解除

ブロック解除が完了しました

機能制限のお知らせ

現在、コメントの違反報告があったため一部機能が利用できなくなっています。

そのため、この機能はご利用いただけません。
詳しくはこちらにお問い合わせください。

ユーザーをフォローすることにより自身の基本情報
お相手に公開されます