AWS Lambda
Serverless event-driven computing.
AWS Lambdaは、Amazon Web Services (AWS) が提供するサーバーレスでイベント駆動型のコンピューティングサービスです。開発者はサーバーをプロビジョニングまたは管理することなくコードを実行できます。開発者はLambda関数としてコードをアップロードし、AWSは高可用性でそのコードを実行およびスケーリングするために必要なインフラストラクチャを自動的に処理します。関数は、Amazon S3バケット内のデータの変更、Amazon DynamoDBテーブルの更新、または[API Gateway](/ja/terms/api-gateway)リクエストなど、さまざまなイベントによってトリガーされます。トリガーが発生すると、Lambdaは関数を実行し、必要なコンピューティングリソースを割り当てます。請求は、リクエスト数と実行中の期間/メモリ消費量に基づいて行われ、寛大な無料利用枠があります。主な機能には、自動スケーリング、ステートレス実行環境(ただし、状態は外部で管理可能)、複数のプログラミング言語(Node.js、Python、Java、C#、Go、Ruby、PowerShell、およびカスタムランタイム)のサポート、および広範なAWSサービスとの統合が含まれます。Lambda関数は通常、短命であり、長時間実行されるアプリケーションではなく、特定のタスク向けに設計されています。トレードオフには、コールドスタートの可能性(関数が最近呼び出されていない場合の遅延)、実行時間制限、メモリと一時ストレージの制限、およびAWSエコシステムへのベンダーロックインが含まれます。イベント処理、マイクロサービス、データ変換、およびバックエンドAPIに最適です。
graph LR
Center["AWS Lambda"]:::main
Rel_api_gateway["api-gateway"]:::related -.-> Center
click Rel_api_gateway "/terms/api-gateway"
Rel_microservices["microservices"]:::related -.-> Center
click Rel_microservices "/terms/microservices"
Rel_serverless["serverless"]:::related -.-> Center
click Rel_serverless "/terms/serverless"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 理解度チェック
🧒 5歳でもわかるように説明
AWS Lambdaは、特定の料理(イベントが発生)を依頼されたときにだけ調理する魔法のシェフのようなものです。シェフにレシピ(コード)を渡すと、適切な道具を使ってすぐに調理し、調理にかかった時間だけを請求してくれます。
🤓 Expert Deep Dive
AWS Lambdaは、コンテナベースの実行モデルで動作します。関数が呼び出されると、Lambdaはマイクロコンテナをプロビジョニングし、関数コードをロードして実行します。頻繁に呼び出されない関数では、このプロビジョニングステップにより「コールドスタート」の遅延が発生します。短期間内に後続の呼び出しは、既存のコンテナ(「ウォームスタート」)を再利用し、遅延を大幅に削減します。Lambda関数は本質的にステートレスであり、必要な状態は外部(例:DynamoDB、S3、RDS)に永続化する必要があります。同時実行モデルにより、複数の関数インスタンスが並列で実行され、AWSによってアカウントレベルの同時実行制限まで需要に合わせて管理されます。プロビジョンド同時実行は、指定された数の実行環境をウォーム状態に保つことで、遅延に敏感なアプリケーションのコールドスタートを軽減するために使用できます。セキュリティはIAMロールを通じて管理され、関数に他のAWSリソースにアクセスするための詳細な権限が付与されます。イベントソースマッピングメカニズムにより、Lambdaはイベントソース(Kinesisストリームなど)をポーリングし、レコードのバッチで関数を呼び出すことができます。アーキテクチャの考慮事項には、関数のメモリ割り当ての最適化(CPU割り当てにも影響します)、依存関係の管理、および潜在的な再試行による冪等性のための設計が含まれます。