AWS Lambda とは - AWS Lambda

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS Lambda とは

AWS Lambda はサーバーのプロビジョニングや管理をする必要がなく、コードを実行できるコンピューティングサービスです。

Lambda は可用性の高いコンピューティングインフラストラクチャでコードを実行し、コンピューティングリソースに関するすべての管理を行います。これには、サーバーおよびオペレーティングシステムのメンテナンス、容量のプロビジョニングおよび自動スケーリング、さらにログ記録などが含まれます。Lambda で必要なことは、サポートするいずれかの言語ランタイムにコードを与えることだけです。

コードを Lambda 関数に整理します。Lambda サービスは、必要な場合にのみ関数を実行し、自動的にスケーリングします。消費したコンピュート時間に対してのみ課金されます。コードが実行されていない間は料金は発生しません。詳細については、AWS Lambda 料金を参照してください。

ヒント

サーバーレスソリューションを構築する方法については、「サーバーレスデベロッパーガイド」を参照してください。

Lambda を使用するタイミング

Lambda は、迅速にスケールアップが求められ、要求がないときはゼロにスケールダウンする必要があるアプリケーションシナリオに最適なコンピュートサービスです。例えば、Lambda は以下を実行するために使用できます。

  • ファイル処理: Amazon Simple Storage Service (Amazon S3) を使用して、アップロード後に Lambda データ処理をリアルタイムでトリガーします。

  • ストリーム処理: Lambda と Amazon Kinesis を使用して、アプリケーションアクティビティの追跡、取引注文の処理、クリックストリーム分析、データクレンジング、ログのフィルタリング、インデックス作成、ソーシャルメディア分析、モノのインターネット (IoT) デバイスデータのテレメトリ、および計測のためにリアルタイムのストリーミングデータを処理します。

  • ウェブアプリケーション: Lambda と他の AWS サービスを組み合わせて、自動的にスケールアップおよびスケールダウンし、複数のデータセンターにまたがる高可用性設定で実行される強力なウェブアプリケーションを構築します。

  • IoT バックエンド: Lambda を使用してサーバーレスバックエンドを構築し、ウェブ、モバイル、IoT、およびサードパーティの API リクエストを処理します。

  • モバイルバックエンド: Lambda と Amazon API Gateway を使用してバックエンドを構築し、API リクエストを認証して処理します。AWS Amplify を使用すると、iOS、Android、ウェブ、React Native フロントエンドと簡単に統合できます。

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

Lambda は、容量の管理、モニタリング、Lambda 関数のログ記録など、運用および管理アクティビティをユーザーに代わって実行します。

コンピュートリソースを管理する必要がある場合、AWS では他にも、以下のようなコンピュートサービスを用意しています。

  • AWS App Runner はコンテナ化されたウェブアプリケーションを自動的に構築およびデプロイし、暗号化されたトラフィックの負荷分散、トラフィックのニーズに合わせたスケーリングを行い、サービスにアクセスする方法の設定を可能にし、プライベート Amazon VPC で他の AWS アプリケーションと通信します。

  • Amazon ECS を使用する AWS Fargate は、仮想マシンのクラスターをプロビジョニング、設定、スケーリングする必要なく、コンテナを実行します。

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

主な特徴

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

環境変数

環境変数を使用し、コードを更新することなく関数の動作を調整します。

バージョン

たとえば、安定した本番環境バージョンのユーザーに影響を与えることなく、ベータテスト用に新しい関数を使用するために、関数のデプロイをバージョンで管理できます。

コンテナイメージ

既存のコンテナツールを再使用したり、かなり大量の依存関係 (機械学習など) を持つ大規模なワークロードをデプロイしたりすることができるように、AWS が提供するベースイメージまたは代替のベースイメージを使用して、Lambda 関数のコンテナイメージを作成します。

レイヤー

ライブラリおよびその他の依存関係をパッケージ化し、デプロイアーカイブのサイズを削減し、コードをデプロイするスピードを速めます。

Lambda 拡張機能

モニタリング、視認性、セキュリティ、ガバナンスに使用するツールで Lambda 関数を強化します。

関数 URL

Lambda 関数に専用の HTTP(S) エンドポイントを追加します。

レスポンスストリーミング

Lambda 関数 URL を設定し、レスポンスペイロードを Node.js 関数からクライアントにストリーミングで返したり、最初のバイトまでの時間 (TTFB) のパフォーマンスを向上させたり、より大きなペイロードを返したりします。

同時実行とスケーリングの制御

本番環境のアプリケーションのスケーリングおよび応答性を細かく制御します。

コード署名

承認されたデベロッパーのみが Lambda 関数で未変更で信頼できるコードを公開していることを検証します。

プライベートネットワーク設定

データベース、キャッシュインスタンス、内部サービスなどのリソースのプライベートネットワークを作成します。

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

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

Lambda SnapStart for Java

Java ランタイムの起動パフォーマンスを追加コストなしで最大 10 倍向上させることができ、通常は関数コードを一切変更しません。