AWS Lambda とは
AWS Lambda を使用すると、サーバーをプロビジョニングまたは管理することなくコードを実行できます。Lambda は、高可用性コンピューティングインフラストラクチャ上でコードを実行し、サーバーとオペレーティングシステムのメンテナンス、容量のプロビジョニングと自動スケーリング、コードのモニタリング、ログ記録などのすべてのコンピューティングリソースを管理します。コードを Lambda 関数に整理します。Lambda サービスは、必要な場合にのみ関数を実行し、自動的にスケーリングします。料金の詳細については、「AWS Lambda の料金表
Lambda を使用する際、ユーザーが責任を負うのはコードのみです。Lambda によって、コードを実行するメモリのバランス、CPU、ネットワーク、その他のリソースを提供するコンピューティングフリートが管理されます。Lambda がこれらのリソースを管理するため、コンピューティングインスタンスにログインしたり、提供されたランタイムのオペレーティングシステムをカスタマイズしたりすることはできません。
Lambda を使用するタイミング
Lambda は、迅速にスケールアップが求められ、要求がないときはゼロにスケールダウンする必要があるアプリケーションシナリオに最適なコンピュートサービスです。例えば、Lambda は以下を実行するために使用できます。
-
ストリーム処理: Lambda と Amazon Kinesis を使用して、アプリケーションアクティビティの追跡、取引注文の処理、クリックストリーム分析、データクレンジング、ログのフィルタリング、インデックス作成、ソーシャルメディア分析、モノのインターネット (IoT) デバイスデータのテレメトリ、および計測のためにリアルタイムのストリーミングデータを処理します。
-
ウェブアプリケーション: Lambda と他の AWS サービスを組み合わせて、自動的にスケールアップおよびスケールダウンし、複数のデータセンターにまたがる高可用性設定で実行される強力なウェブアプリケーションを構築します。AWS サービスを使用してウェブアプリケーションを構築するために、開発者は Infrastructure as Code (IaC) と AWS CloudFormation
、AWS Cloud Development Kit (AWS CDK) 、AWS Serverless Application Model などのオーケストレーションツールを使用したり、AWS Step Functions を使用して複雑なワークフローを調整したりすることができます。 -
モバイルバックエンド: Lambda と Amazon API Gateway を使用してバックエンドを構築し、API リクエストを認証して処理します。AWS Amplify を使用すると、iOS、Android、ウェブ、React Native フロントエンドと簡単に統合できます。
-
IoT バックエンド: Lambda を使用してサーバーレスバックエンドを構築し、ウェブ、モバイル、IoT、およびサードパーティの API リクエストを処理します。
-
ファイル処理: Amazon Simple Storage Service (Amazon S3) を使用して、アップロード後に Lambda データ処理をリアルタイムでトリガーします。
-
データベースオペレーションと統合: Lambda を使用すると、ユーザー登録や注文送信などの Amazon RDS 操作のキューメッセージの処理から、監査ログ記録、データレプリケーション、自動ワークフローのための DynamoDB の変更への対応まで、データベースのやり取りをリアクティブおよびプロアクティブの両方で処理できます。
-
スケジュールされたタスクと定期的なタスク: EventBridge ルールで Lambda を使用して、データベースのメンテナンス、データアーカイブ、レポートの生成、その他のスケジュールされたビジネスプロセスなどの時間ベースの操作をcron のような書式て実行します。
Lambda の仕組み
Lambda はサーバーレスのイベント駆動型コンピューティングサービスであるため、従来のウェブアプリケーションとは異なるプログラミングパラダイムを使用します。次のモデルは、Lambda の基本的な仕組みを示しています。
-
Lambda 関数は、Lambda アプリケーションを作成するために使用する基本的な構成要素であり、コードの作成と整理に使用されます。
-
セキュリティとアクセスは、Lambda のアクセス許可を通じて制御し、実行ロールを使用して、関数が対話できる AWS サービスと、コードと対話できるリソースポリシーを管理します。
-
イベントソースとAWS サービスは Lambda 関数をトリガーし、関数が処理するイベントデータを JSON 形式で渡します (これにはイベントソースマッピングが含まれます)。
-
Lambda は、ランタイム、レイヤー、拡張機能をパッケージ化した実行環境で、言語固有のランタイム (Node.js や Python など) を使用してコードを実行します。
ヒント
サーバーレスソリューションを構築する方法については、「サーバーレスデベロッパーガイド」を参照してください。
主な特徴
安全なアプリケーションを設定、制御、デプロイします。
-
環境変数は、新しいコードをデプロイなしでアプリケーションの動作を変更します。
-
バージョンは、安定した本番環境を維持しながら、新機能を安全にテストします。
-
Lambda レイヤーは、複数の関数間で共通コンポーネントを共有することで、コードの再利用とメンテナンスを最適化します。
-
コード署名は、承認されたコードのみが本番稼働システムに到達するようにすることで、セキュリティコンプライアンスを強化します。
確実にスケールしてパフォーマンスを実現。
-
同時実行数とスケーリングの制御により、トラフィックの急増時にアプリケーションの応答性とリソース使用率を正確に管理します。
-
Lambda SnapStart はコールドスタート時間を大幅に短縮します。Lambda SnapStart は通常、関数コードを変更することなく、わずか 1 秒未満の起動パフォーマンスを提供できます。
-
レスポンスストリーミングは、リアルタイム処理のために大きなペイロードを段階的に配信することで、関数のパフォーマンスを最適化します。
-
コンテナイメージは、コンテナワークフローを使用して、複雑な依存関係を持つ関数をパッケージ化します。
シームレスに接続して統合します。
-
VPC ネットワークは、機密リソースと内部サービスを保護します。
-
永続データを共有し、関数呼び出し全体でステートフル操作を管理するファイルシステム。
-
関数 URLは、追加のサービスなしで、パブリック向けの API とエンドポイントを作成します。
-
Lambda 拡張機能は、モニタリング、セキュリティ、運用ツールで関数を強化します。
関連情報
Lambda の仕組みについては、「Lambda の仕組み」を参照してください。
Lambda の使用を開始するには、「最初の Lambda 関数を作成する」を参照してください。
アプリケーション例の一覧については、「サンプルアプリケーションとパターンの使用開始」を参照してください。