AWS Lambda とは - AWS Lambda

AWS Lambda とは

Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。Lambda は可用性の高いコンピューティングインフラストラクチャでコードを実行し、コンピューティングリソースの管理をすべて担当します。これにはサーバーおよびオペレーティングシステムのメンテナンス、容量のプロビジョニングおよびオートスケーリング、コードのモニタリングおよびログ記録などが含まれます。Lambda を使用すると、実質どのようなタイプのアプリケーションやバックエンドサービスに対してもコードを実行できます。必要なのは、Lambda がサポートするいずれかの言語でコードを指定することだけです。

注記

AWS Lambda デベロッパーガイドは、サポートされている言語の 1 つを使用したプログラムのコーディング、コンパイル、デプロイの経験があることを前提としています。

コードを Lambda 関数に整理します。Lambda は必要に応じて関数を実行し、1 日あたり数個から 1 秒あたり数千個のリクエストまで自動的にスケーリングします。課金は実際に消費したコンピューティング時間に対してのみ発生します。コードが実行されていない場合、料金は発生しません。

Lambda API を使用して Lambda 関数を呼び出したり、他の AWS のサービスからのイベントに応答してLambda が関数を実行したりできます 例えば、Lambda を使用して以下のことができます。

  • AWS のサービス (Amazon Simple Storage Service (Amazon S3) や Amazon DynamoDB など) のデータ処理トリガーの構築。

  • Amazon Kinesis に保存されたストリーミングデータの処理。

  • AWS 規模、パフォーマンス、セキュリティで動作する独自のバックエンドの作成。

Lambda は可用性の高いサービスです。詳細については、「AWS Lambda サービスレベルアグリーメント」を参照してください。

Lambda が適している用途

Lambda は、多くのアプリケーションシナリオにとって最適なコンピューティングサービスです。Lambdaによって提供されるリソース内で Lambda スタンダードランタイム環境を使用しながら、アプリケーションのコードを実行できます。

Lambda を使用する際、ユーザーが責任を負うのはコードのみです。Lambda によって、コードを実行するメモリのバランス、CPU、ネットワーク、その他のリソースを提供するコンピューティングフリートが管理されます。Lambda がこれらのリソースを管理するため、コンピューティングインスタンスにログインしたり、提供されたランタイムのオペレーティングシステムをカスタマイズしたりすることはできません。Lambda は、容量の管理、モニタリング、Lambda 関数のログ記録など、運用および管理アクティビティをユーザーに代わって実行します。

AWS では、独自のコンピューティングリソースを管理する必要があるお客様に対しても、その目的に適した、他のコンピューティングサービスをご用意しています。次に例を示します。

  • Amazon Elastic Compute Cloud (Amazon EC2) は、選択するさまざまな EC2 インスタンスタイプを提供します。このため、オペレーティングシステム、ネットワークやセキュリティの設定、ソフトウェアスタック全体をカスタマイズすることができます。容量のプロビジョニング、フリートの状態とパフォーマンスのモニタリング、および耐障害性のためのアベイラビリティゾーンの使用は、お客様が行う作業となります。

  • AWS Elastic Beanstalk では、アプリケーションを Amazon EC2 にデプロイし、スケーリングできます。基盤となる EC2 インスタンスに対する所有権と完全なコントロール権は、お客様が保持します。

Lambda の機能

次の主要な機能は、スケーラブルで安全で拡張が容易な Lambda アプリケーションの開発に役立ちます。

同時実行とスケーリングコントロール

同時実行制限やプロビジョニングされた同時実行などの 同時実行とスケーリング制御 により、製品アプリケーションのスケーリングと応答性をきめ細かく制御できます。

コンテナイメージとして定義された関数

お好きなコンテナイメージツール、ワークフロー、依存関係を使用して、Lambda 関数を構築、テスト、デプロイできます。

コード署名

Lambda のコード署名により、信頼性と整合性を管理できます。それにより、承認されたデベロッパーによって公開された未変更のコードのみが、Lambda 関数にデプロイされていることを確認できます。

Lambda の拡張

Lambda 拡張機能を使用して Lambda 関数を補強できます。拡張機能を使用すると、モニタリング、観測、セキュリティ、ガバナンス用のお気に入りのツールと Lambda を容易に統合できます。

関数ブループリント

関数ブループリントは、他の AWS サービスやサードパーティーのアプリケーションで Lambda を使用する方法を示すサンプルコードを提供します。ブループリントには、Node.js および Python ランタイム用のサンプルコードおよび関数設定プリセットが含まれています。

データベースアクセス

データベースプロキシ は、データベース接続のプールを管理し、関数からのクエリを中継します。これにより、関数はデータベース接続を使い果たすことなく、同時実行レベルを上げることができます。

ファイルシステムのアクセス

Amazon Elastic File System (Amazon EFS) ファイルシステムをローカルディレクトリにマウントするように関数を設定できます。Amazon EFS を使用すると、関数コードは共有リソースに安全かつ高い同時実行数でアクセスして変更できます。

Lambda の開始方法

Lambda を効果的に操作するには、次のドメインにおけるコーディングの経験と専門知識が必要です。

  • Linux OS とコマンド、および、プロセス、スレッド、ファイル権限などの概念。

  • クラウドの概念と IP ネットワークの概念 (パブリックネットワークとプライベートネットワーク)。

  • IPC、キュー、メッセージング、通知、同時実行としての、HTTP などの分散コンピューティングの概念。

  • セキュリティサービスと概念に精通していること: AWS Identity and Access Management (IAM) とアクセス制御の原則、およびAWS Key Management Service (AWS KMS) と公開キーインフラストラクチャ。

  • Lambda と対話する主要なサービスに関する知識: Amazon API Gateway、Amazon S3、Amazon Simple Queue Service (Amazon SQS)、DynamoDB。

  • Linux を使用して EC2 インスタンスを設定する。

Lambda を初めて使用する場合は、ベーシックな学習に役立つ以下のトピックからスタートすることをお勧めします。

  1. Lambda の製品概要を読み、Lambda 入門ページを詳しくご覧ください。

  2. Lambda コンソールを使用し、Lambda 関数を作成してテストするには、コンソールベースの入門演習をお試しください。 この演習では、Lambda プログラミングモデルやその他の概念について説明します。

  3. コンテナイメージのワークフローに精通している場合は、「入門」演習を試した上で、コンテナイメージとして定義された Lambda 関数を作成してください

AWS では、サーバーレスアプリケーションと Lambda について学習するための次のリソースも提供しています。

Lambda は、指定したイベントに基づいて関数を呼び出すために、他の AWS のサービスと統合されます。次に例を示します。

  • Lambda 関数へ HTTP リクエストをルーティングする ウェブ API 用の安全でスケーラブルなゲートウェイを提供するために、API Gateway を使用します。

  • キューまたはデータストリームを生成するサービス (DynamoDBKinesis など) の場合、Lambda はサービスからキューまたはデータストリームをポーリングし、受信したデータを処理する関数を呼び出します。

  • オブジェクトが作成または削除されたときなどに、Amazon S3 オブジェクトを処理する Lambda 関数を呼び出す Amazon S3 イベントを定義します。

  • Lambda 関数を使用して、Amazon SQS メッセージまたはAmazon Simple Notification Service (Amazon SNS) 通知を処理します。

  • AWS Step Functionsを使用して、ステートマシンと呼ばれるサーバーレスワークフローに Lambda 関数を連結します。

Lambda へのアクセス

次のいずれかのインタフェースを使用して、Lambda 関数を作成、呼び出し、管理できます。

  • AWS マネジメントコンソールは、関数にアクセスするためのウェブインターフェースを提供します。詳細については、「Lambda コンソール」を参照してください。

  • AWS Command Line Interface (AWS CLI) – Lambda を含むさまざまな AWS サービス用のコマンドを備え、Windows、macOS、Linux でサポートされています。詳細については、「AWS CLI での Lambda の使用」を参照してください。

  • AWS SDK – 言語固有の API を提供し、署名の計算、リクエストの再試行処理、エラー処理など、各種接続の詳細を管理します。詳細については、AWSSDK をご参照ください。

  • AWS CloudFormation – Lambda アプリケーションを定義するテンプレートを作成します。詳細については、「AWS Lambda アプリケーション 」を参照してください。AWS CloudFormation は AWS Cloud Development Kit (CDK) もサポートしています。

  • AWS Serverless Application Model (AWS SAM) – AWSサーバレスアプリケーションを設定および管理するためのテンプレートと CLI を提供します。詳細については、「AWS SAM」を参照してください。

Lambda の料金

Lambda 関数の作成に追加料金はかかりません。関数の実行や、Lambda と他の AWS サービス間のデータ転送には料金が発生します。一部のオプション Lambda 機能 (プロビジョニングされた同時実行など) にも料金が発生します。詳細については、AWS Lambda 料金を参照してください。