AWS Lambda とは
Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。Lambda は可用性の高いコンピューティングインフラストラクチャでコードを実行し、コンピューティングリソースの管理をすべて担当します。これにはサーバーおよびオペレーティングシステムのメンテナンス、容量のプロビジョニングおよびオートスケーリング、コードのモニタリングおよびログ記録などが含まれます。Lambda を使用すると、実質どのようなタイプのアプリケーションやバックエンドサービスに対してもコードを実行できます。必要なのは、Lambda がサポートするいずれかの言語でコードを指定することだけです。
コードを 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 を初めて使用する場合は、ベーシックな学習に役立つ以下のトピックからスタートすることをお勧めします。
-
Lambda の製品概要と、「Lambda 使用開始」ページをお読みください。
-
Lambda コンソールを使用して Lambda 関数を作成してテストするには、コンソールベースの使用開始演習をお試しください。この演習では、Lambda プログラミングモデルやその他の概念について説明します。
コンテナイメージのワークフローに精通しているという場合は、使用開始演習を実行して、コンテナイメージとして定義された Lambda 関数を作成してください。
-
AWS では、サーバーレスアプリケーションと Lambda について学習するための次のリソースも提供しています。
-
AWS コンピューティングブログには Lambda に関する役立つ記事が掲載されています。
-
AWS Serverless は AWS サーバーレス開発に関連するブログ、ビデオ、トレーニングを提供します。
AWS オンラインテクニカルトーク YouTube チャンネルには、Lambda 関連トピックに関する動画が投稿されています。サーバーレスアプリケーションと Lambda の概要については、「AWS 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 を提供します。詳細については、「SAM CLI」を参照してください。
Lambda の料金
Lambda 関数の作成に追加料金はかかりません。関数の実行や、Lambda と他の AWS サービス間のデータ転送には料金が発生します。一部のオプション Lambda 機能 (プロビジョニングされた同時実行など) にも料金が発生します。詳細については、AWS Lambda 料金を参照してください。