AWS Lambda の機能

なぜ AWS Lambda を使うのですか?

AWS Lambda はイベント発生時にお客様のコードを実行し、基盤となるコンピューティングリソースをお客様に代わって管理する、サーバーレスコンピューティングサービスです。これらのイベントには、状態の変化や、ユーザーが e コマースウェブサイトのショッピングカートに商品を入れるなどの更新が含まれます。AWS Lambda を使用すると、カスタムロジックを使って AWS の他のサービスをスケールすることや、AWS の規模、パフォーマンス、セキュリティを活用して運用する自社のバックエンドサービスを作成することができます。AWS Lambda では、複数のイベント (Amazon API Gateway 経由の HTTP リクエスト、Amazon Simple Storage Service (Amazon S3) バケット内のオブジェクト変更、Amazon DynamoDB 内のテーブル更新、AWS Step Functions 内の状態遷移など) に応答して、自動的にコードが実行されます。

Lambda では、お客様のコードが高可用性コンピューティングインフラストラクチャで運用され、お客様のコンピューティングリソースの管理のすべてが行われます。これには、サーバーとオペレーティングシステムのメンテナンス、容量のプロビジョニングとオートスケーリング、コードとセキュリティパッチのデプロイ、コードのモニタリングとロギングが含まれます。お客様はコードを書くだけです。

Page Topics

製品の主な機能

製品の主な機能

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 を使用して、Lambda アプリケーションプログラムインターフェイス (API) または Amazon API Gateway を使用して構築されたカスタム 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 によって組み込みのロギングおよびモニタリング機能を提供します。

AWS Lambda は各 AWS リージョンの複数のアベイラビリティーゾーン (AZ) 全体でコンピューティング性能を維持し、個別のマシンまたはデータセンター設備の障害からコードを保護します。AWS Lambda およびこのサービスで実行される関数は予測可能で信頼性の高い運用パフォーマンスを発揮します。AWS Lambda は、サービス自体とサービスによって運用される関数のために高可用性を発揮するよう設計されています。メンテナンスの時間帯や定期的なダウンタイムはありません。

AWS Lambda は、コンテナイメージとしてのパッケージ化とデプロイ機能をサポートしているため、お客様は使い慣れたコンテナイメージツール、ワークフロー、依存関係を使用して、Lambda ベースのアプリケーションを簡単に構築できます。また、お客様は、Lambda の簡素な操作性、1 秒未満の起動時間でのオートスケーリング、高可用性、従量課金制モデル、200 種類を超える AWS のサービスおよびサービスとしてのソフトウェア (SaaS) アプリケーションとのネイティブ統合の恩恵も受けられます。企業のお客様は、Lambda とコンテナ化されたアプリケーションの両方で一貫したツールセットを使用でき、セキュリティスキャンや画像署名などの中央ガバナンス要件を簡素化することができます。

AWS Lambda は必要なときだけコードを実行し、リクエスト受信の回数に合わせて自動的にスケールします。お客様は手動で設定する必要がありません。コードが処理できるリクエスト数に上限はありません。AWS Lambda は基本的にイベントに対応してミリ秒単位でコードを実行開始します。Lambda は自動的にスケールするので、イベントの頻度が増えても安定した高いパフォーマンスを維持できます。コードがステートレスなので、Lambda は時間のかかるデプロイや設定によって遅れが出ることなく必要な数だけインスタンスを実行できます。

Amazon RDS Proxyを使用して、リレーショナルデータベース向けのフルマネージド型の接続プールを利用します。RDS プロキシは、リレーショナルデータベースへの数千の同時接続を効率的に管理し、スケーラブルで安全な Lambda ベースのサーバーレスアプリケーションを簡単に構築できるようにします。このアプリケーションは、リレーショナルデータベースと対話します。現在、RDS プロキシは MySQL と Aurora のサポートを提供しています。Amazon RDS コンソールまたは AWS Lambda コンソールを介して、サーバーレスアプリケーションに RDS プロキシを使用できます。

プロビジョニングされた同時実行により、サーバーレスアプリケーションのパフォーマンスをより詳細に制御できます。オンにすると、プロビジョニングされた同時実行は、2 桁のミリ秒で応答するように機能を初期化し、ハイパー対応状態になります。プロビジョニングされた同時実行は、関数の開始時刻をより細かく制御する必要があるあらゆる AWS Lambda アプリケーションに最適です。アプリケーションが必要とする同時実行を簡単に設定、調整できます。需要に応じて、スケールアップ、スケールダウン、または完全にオフにすることができます。プロビジョニングされた同時実行を活用することで、コードの変更やコンピューティングリソースの管理を行うことなく、レイテンシーに敏感なアプリケーションの一貫したパフォーマンスを実現します。

AWS Lambda 向け Amazon Elastic File System (EFS) では、どのような規模でも、低レイテンシーで大量のデータを安全に読み取り、書き込み、保持することができます。データを処理するために、コードを書き込んだり、一時ストレージにダウンロードする必要はありません。これにより、時間を節約し、コードを簡素化して、ビジネスロジックに集中することができます。EFS for Lambda は、大容量データの処理やバックアップ、大容量のリファレンスファイルやモデルのロードなど、さまざまなユースケースに最適です。また、EFS for AWS Lambda を使用することで、サーバーレスインスタンスやコンテナベースのアプリケーション間でファイルを共有したり、機械学習 (ML) の推論を実行したりすることもできます。

Lambda@Edge で AWS Lambda を使用すると、世界中の AWS エッジロケーションで Amazon CloudFront のイベント (オリジンサーバーやビューワーとの間のコンテンツリクエストなど) に応答するコードを実行できます。これにより、各エンドユーザーにパーソナライズされた豊富なコンテンツを、低いレイテンシーで簡単に配信できます。 

AWS Step Functions のワークフローを構築して、複雑なタスクや長時間実行するタスクのために複数の AWS Lambda 関数を調整します。Step Functions では、順次、並列、分岐、およびエラー処理の各ステップを使用して、Lambda 関数のコレクションをトリガーするワークフローを定義できます。Step Functions と Lambda を使用すると、アプリケーションやバックエンド用のステートフルな長時間実行するプロセスを構築できます。

AWS Lambda の内蔵 software development kit (SDK) は、AWS Identity and Access Management (IAM) と統合し、他の AWS サービスへのコードアクセスを安全に行います。AWS Lambda は、デフォルトでは、Amazon Virtual Private Cloud (VPC) 内でコードを実行します。オプションとして、カスタムセキュリティグループとネットワークアクセスコントロールリストを活用するために、独自の VPC の背後にある AWS Lambda リソースアクセスを設定することができます。これにより、VPC 内のリソースへの安全な Lambda 関数のアクセスが提供されます。 AWS Lambda は、SOCHIPAAPCI、そして ISO に準拠しています。Lambda 認定とコンプライアンス対応の最新情報については、すべてのサービス対象範囲を参照してください。

AWS Lambda のコード署名により、承認されたデベロッパーが公開した改変されていないコードのみが Lambda 関数にデプロイされていることを検証することができます。デジタル署名されたコードアーティファクトを作成し、Lambda 関数を設定するだけで、デプロイ時に署名を検証できます。これにより、大規模なチーム内であっても、高いセキュリティ基準を適用しながら、アプリケーション開発の速度と俊敏性が向上します。

AWS Lambda を使用すると、サーバー単位ではなく実行時間に対して料金をお支払いいただきます。Lambda 関数を使用する場合は、送信したリクエストとコードを実行するために必要な計算時間に対してのみ料金が発生します。料金は 1 ミリ秒の増分で計算されます。1 日に数件のリクエストから 1 秒に数千件のリクエストまで、簡単かつコスト効率よくオートスケーリングすることができます。プロビジョニングされた同時実行では、設定した同時実行の量と設定期間に応じて料金をお支払いいただきます。プロビジョニングされた同時実行が有効になっていて、ご使用の関数を実行すると、リクエストと実行時間に対しても料金が発生します。料金の詳細については、「AWS Lambda の料金」をご覧ください。

お客様が関数に割り当てるメモリ量を選択すると、それに比例した CPU パワー、ネットワーク帯域幅、ディスクの入出力 (I/O) が AWS Lambda によって割り当てられます。

AWS Lambda の拡張機能は、お好みのモニタリング、可観測性、セキュリティ、ガバナンスの各ツールとの統合を容易にします。Lambda は、実行環境でお客様の関数を呼び出し、お客様の関数コードが実行される安全で分離されたランタイムを提供します。Lambda 拡張機能は、Lambda の実行環境内で、お客様の関数コードと一緒に実行されます。Lambda 拡張機能では、AWS Lambda Telemetry API を使用して、ログ、メトリクス、トレースなどの細かい診断情報を Lambda から直接取得し、任意の宛先に送信することができます。また、エクステンションを使用して、好みのセキュリティエージェントを Lambda に統合することも可能で、いずれも運用上のオーバーヘッドはなく、機能パフォーマンスへの影響も最小限に抑えられます。

AWS が設計した Arm ベースのプロセッサアーキテクチャを使用する Graviton2 で実行される AWS Lambda 関数は、x86 プロセッサで実行される関数と比較して、最大 34% 優れた料金パフォーマンスを実現します。これは、ウェブやモバイルのバックエンド、データ、メディア処理など、さまざまなサーバーレスのワークロードに適用されます。低レイテンシー、最大 19% のパフォーマンス向上、20% のコスト削減、そして AWS で現在利用可能な中で最高の電力効率を実現した Graviton2 機能は、ミッションクリティカルサーバーレスアプリケーションの強化に使用できます。

AWS Lambda には、ログ、メトリックス、トレースを自動的にキャプチャして、Amazon CloudWatch や AWS X-Ray などの AWS モニタリングおよびオブザーバビリティサービスに送信する、モニタリング機能が内蔵されています。Lambda には、ログをリアルタイムで表示および分析できる Live Tail、ログを JSON 構造化形式でネイティブにキャプチャできる高度なロギング制御、コードを変更せずにログレベルのフィルタリングを制御する機能、Lambda がログを送信する宛先の CloudWatch ロググループのカスタマイズなどの高度なモニタリング機能もあります。Lambda は、Application Signals により、すぐに使えるアプリケーションパフォーマンスモニタリング (APM) ツールを提供して、サーバーレスアプリケーションのスループット、可用性、レイテンシー、障害、エラーを追跡します。Lambda Insights は、メモリ、CPU、ネットワーク使用量などの詳細なメトリクスを自動的にキャプチャし、Lambda 関数のパフォーマンスに関するより深い分析情報を提供します。さらに、Lambda は、Lambda 拡張機能によるサードパーティのモニタリングツールとのシームレスな統合をサポートしているため、お好みのツールをサーバーレスアプリケーションの監視やトラブルシューティングに簡単に使用できます。