AWS Lambda とは - AWS Lambda

AWS Lambda とは

Lambdaは、サーバーのプロビジョニングや管理なしでコードを実行できるコンピューティングサービスです。Lambdaは、高可用性コンピューティングインフラストラクチャでコードを実行し、サーバーおよびオペレーティングシステムのメンテナンス、キャパシティプロビジョニング、自動スケーリング、コードの監視、ログ記録など、コンピューティングリソースの管理をすべて実行します。Lambda を使用すると、実質どのようなタイプのアプリケーションやバックエンドサービスに対してもコードを実行できます。Lambda がサポートするいずれかの言語でコードを記述するだけで、この機能を利用できます。

注記

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

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

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

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

  • 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、キュー、メッセージング、通知、同時実行などの HTML などの分散コンピューティングの概念。

  • セキュリティサービスと概念に精通していること: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 要求をルーティングする Web API 用の安全でスケーラブルなゲートウェイを提供するために API Gateway を使用します。

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

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

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

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

Lambda へのアクセス

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

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

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

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

  • 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 料金を参照してください。