AWS Lambda はイベント発生時にお客様のコードを実行し、基盤となるコンピューティングリソースをお客様に代わって管理する、サーバーレスコンピューティングサービスです。AWS Lambda を使用すると、カスタムロジックを使って AWS の他のサービスを拡張することや、AWS の規模、パフォーマンス、セキュリティを活用して運用する自社のバックエンドサービスを作成することができます。AWS Lambda では、複数のイベント (Amazon API Gateway 経由の HTTP リクエスト、Amazon S3 バケット内のオブジェクト変更、Amazon DynamoDB 内のテーブル更新、AWS Step Functions 内の状態遷移など) に応答して、自動的にコードが実行されます。
Lambda は可用性の高いコンピューティングインフラストラクチャで、お客様のコードを実行しコンピューティングリソースの管理をすべて担当します。これにはサーバーおよびオペレーティングシステムの管理、キャパシティーのプロビジョニングおよび自動スケーリング、コードおよびセキュリティパッチのデプロイ、モニタリングおよびロギングなどが含まれます。お客様はコードを書くだけです。

AWS Lambda 関数の紹介
AWS Lambda で実行するコードは「Lambda 関数」と呼ばれます。 1 度 Lambda 関数を作成すれば、スプレッドシートの数式と同じでトリガーすればいつでもすぐに実行されるようになります。各関数はコードと、関数名やリソース要件などの関連情報で構成されます。Lambda 関数は「ステートレス」で、基盤となるインフラストラクチャに依存しないため、必要な関数をすべて迅速に実行することで受信イベントに合わせてスケールします。
AWS Lambda にコードをアップロードすれば、関数を特定の AWS リソース (特定の Amazon S3 バケット、Amazon DynamoDB テーブル、Amazon Kinesis ストリーム、Amazon SNS 通知) に関連付けることができます。その後リソースが変更されると、Lambda は受信リクエストに対応して必要な関数の実行およびコンピューティングリソースの管理を行います。
製品の主な特徴
カスタムロジックで他の AWS のサービスを拡張
AWS Lambda を使用すると、Amazon S3 バケット、Amazon DynamoDB テーブルなどの AWS リソースにカスタムロジックを追加できます。これにより、クラウドに入ってきたデータやクラウド内を移動するデータに簡単にコンピューティングを適用できます。
AWS Lambda の利用を開始するのは簡単です。まずコードをアップロード (または Lambda コンソールで直接構築) して関数を作成し、メモリ、タイムアウト時間、AWS Identity and Access Management (IAM) の役割を選択します。次に、関数をトリガーする AWS リソースとして特定の Amazon S3 バケット、Amazon DynamoDB テーブル、Amazon Kinesis ストリームのいずれかを指定します。リソースが変更されると、Lambda は関数を実行し、受信リクエストに対応するために必要なコンピューティングリソースを開始および管理します。
カスタムバックエンドサービスの作成
AWS Lambda を使用してアプリケーションに対する新規バックエンドサービスを作成し、Amazon API Gateway で構築した Lambda API またはカスタム API エンドポイントを使用してオンデマンドでトリガーできます。クライアントでカスタムイベントにサービスを提供するのではなく、Lambda を使用してカスタムイベントを処理することで、クライアントプラットフォームのばらつきを回避し、バッテリーの消耗を軽減し、より容易な更新を実現できます。
独自コードの採用
AWS Lambda には、学ばなければならない新しい言語、ツール、フレームワークがありません。ネイティブライブラリも含め、サードパーティーのライブラリを使用できます。はい。コード (フレームワーク、SDK、ライブラリ、その他) は Lambda Layer としてパッケージ化し、これを管理して複数の関数で共有できます。Lambda は、ネイティブでは、Java、Go、PowerShell、Node.js、C#、Python、Ruby のコードをサポートしています。また、関数の作成にその他のプログラミング言語を使用できるようにするための Runtime API を提供しています。
完全に自動化された管理
AWS Lambda はコードを可用性の高い、耐障害性を備えたインフラストラクチャで実行するためにインフラストラクチャをすべて管理するため、お客様は差別化されたバックエンドサービスの構築に注力できます。Lambda を使用すれば、パッチがリリースされた際に基盤となる OS を更新したり、使用量の増加に合わせてサーバーのサイズ変更や追加を考えたりする必要はありません。AWS Lambda はコードをシームレスにデプロイし、すべての管理、メンテナンス、セキュリティパッチの適用を担当し、Amazon CloudWatch によって組み込みのロギングおよびモニタリング機能を提供します。
組み込みの耐障害性
Lambda は組み込みの耐障害性を備えています。AWS Lambda は各リージョンの複数のアベイラビリティーゾーン全体でコンピューティング性能を維持し、個別のマシンまたはデータセンター設備の故障からコードを保護します。AWS Lambda およびこのサービスで実行される関数は予測可能で信頼性の高い運用パフォーマンスを発揮します。AWS Lambda は、サービス自体とサービスによって運用される機能のために高可用性を発揮するよう設計されています。メンテナンスの時間帯や定期的なダウンタイムはありません。
自動スケーリング
AWS Lambda は必要なときだけコードを実行し、リクエスト受信の回数に合わせて自動的にスケールします。お客様は何も設定する必要がありません。コードが処理できるリクエスト数に上限はありません。AWS Lambda は基本的にイベントの発生からミリ秒単位でコードを実行します。また Lambda は自動的にスケールするため、イベントの頻度が上昇しても一貫して高いパフォーマンスを維持できます。コードがステートレスなので、Lambda は時間のかかるデプロイや設定によって遅れが出ることなく必要な数だけインスタンスを実行できます。
リレーショナルデータベースに接続
Amazon RDS プロキシを使用して、リレーショナルデータベース向けの完全マネージド型の接続プールを利用します。RDS プロキシは、リレーショナルデータベースへの数千の同時データベース接続を効率的に管理し、スケーラブルで安全な Lambda ベースのサーバーレスアプリケーションを簡単に構築できるようにします。このアプリケーションは、リレーショナルデータベースと対話する必要があります。現在、RDS プロキシは MySQL と Aurora のサポートを提供しています。Amazon RDS コンソールまたは AWS Lambda コンソールを介して、サーバーレスアプリケーションに RDS プロキシを使用できます。
パフォーマンスのきめ細かな制御
プロビジョニングされた同時実行により、サーバーレスアプリケーションのパフォーマンスをより詳細に制御できます。有効にすると、プロビジョニングされた同時実行は、2 桁のミリ秒で応答するように機能を初期化し、ハイパー対応状態になります。プロビジョニングされた同時実行は、AWS Lambda を使用して構築され、関数の開始時刻をより詳細に制御する必要があるアプリケーションに最適です。アプリケーションが必要とする同時実行の適切な量を簡単に構成できます。需要が高いときは同時実行のレベルを上げて、需要が低下したときは下げるか、完全にオフにすることができます。プロビジョニングされた同時実行を利用するために、コードを変更する必要はありません。プロビジョニングされた同時実行は、コンピューティングリソースを管理することなく、必要に応じてレイテンシーに敏感なアプリケーションの一貫したパフォーマンスを効率的に達成できる方法です。
共有ファイルシステムに接続する
AWS Lambda 向け Amazon Elastic File System では、どのような規模でも、低レイテンシーで大量のデータを安全に読み取り、書き込み、保持することができます。データを処理するために、一時ストレージにダウンロードするためのコードを書き込む必要はありません。これにより、時間を節約し、コードを簡素化して、ビジネスロジックに集中できるようになります。Lambda 向け EFS は、機械学習アプリケーションの構築、ラージサイズのリファレンスファイルやモデルのロード、大量のデータの処理またはバックアップ、ウェブコンテンツのホスティング、サーバーレスアプリケーションとインスタンスまたはコンテナベースのアプリケーション間でのファイル共有に最適です。
Amazon CloudFront リクエストに応答してコードを実行
Lambda@Edge で AWS Lambda を使用すると、世界中の AWS エッジロケーションで Amazon CloudFront のイベント (オリジンサーバーやビューワーとの間のコンテンツのリクエストなど) に応答するコードを実行できます。これにより、各エンドユーザーにパーソナライズされた豊富なコンテンツを、低いレイテンシーで簡単に配信できます。詳細 »
複数の関数の調整
AWS Step Functions を使用してワークフローを構築することで、複雑なタスクや長時間実行するタスクのために複数の AWS Lambda 関数を調整できます。Step Functions では、順次、並列、分岐、およびエラー処理の各ステップを使用して、Lambda 関数のコレクションをトリガーするワークフローを定義できます。Step Functions と Lambda を使用すると、アプリケーションやバックエンド用のステートフルな長時間実行するプロセスを構築できます。
統合型セキュリティモデル
AWS Lambda では、組み込みの AWS SDK と AWS Identity and Access Management (IAM) の統合を介して、記述したコードから他の AWS 製品に安全にアクセスできます。デフォルトでは、AWS Lambda はコードを VPC 内で実行します。また、オプションで、AWS Lambda を構成して、独自の VPC の背後にあるリソースにアクセスできるようにすることもできます。こうすることで、独自のセキュリティグループやネットワークアクセスコントロールリストを使用して、独自の Lambda 関数が VPC 内のリソースにアクセスできるようにすることができます。
AWS Lambda は、SOC、HIPAA、PCI、ISO に準拠しています。Lambda 認定とコンプライアンス対応の最新情報については、すべてのサービス対象範囲を参照してください。
従量課金制
AWS Lambda を使用すると、サーバー単位ではなく実行時間に対して料金をお支払いいただきます。Lambda 関数を使用する場合は、送信したリクエストとコードを実行するために必要な計算時間に対してのみ料金が発生します。料金は 100 ミリ秒の増分で計算されます。コスト効率がよく、1 日に数件のリクエストから 1 秒に数千件のリクエストまで簡単に自動でスケールできます。プロビジョニングされた同時実行では、構成した同時実行の量と構成期間に対して料金をお支払いいただきます。プロビジョニングされた同時実行がご使用の関数に対して有効になっている場合は、その関数を実行すると、リクエストと実行時間に対しても料金が発生します。料金の詳細については、AWS Lambda の料金をご覧ください。
柔軟性のあるリソースモデル
お客様が関数に割り当てるメモリ量を選択すると、それに比例した CPU パワー、ネットワーク帯域幅、ディスク I/O が AWS Lambda によって割り当てられます。
Lambda をお気に入りのオペレーションツールと統合する
AWS Lambda の拡張機能を使用すると、モニタリング、可観測性、セキュリティ、ガバナンス用のツールと Lambda を統合できます。Lambda の拡張機能は、関数コードが実行される Lambda の実行環境内で実行されます。Lambda の拡張機能を使用すると、細分性の高い診断情報が取得可能になり、関数ログ、メトリクス、トレースを選択したロケーションに送信できます。また、Lambda の実行環境内でセキュリティエージェントと統合できます。オペレーションのオーバーヘッドもなく、関数のペフォーマンスへのインパクトも最小限にとどまります。