AWS Lambda は、Amazon Web Services (AWS) が提供するサーバーレス コンピューティング サービスであり、アプリケーションの導入と管理を簡素化するように設計されています。 Lambda を使用すると、開発者はサーバーの構成、保守、スケーリングを気にせずにコードを実行できます。 Lambda は複数のプログラミング言語をサポートし、自動スケーリングとオンデマンド課金を通じて柔軟でコスト効率の高いコンピューティング ソリューションをユーザーに提供します。マイクロサービスの構築、データストリームの処理、リアルタイムイベントへの応答など、AWS Lambda は強力なサポートを提供し、現代のクラウドコンピューティング環境に欠かせないツールの 1 つです。私たちオンクラウドAIこの記事は、AWS Lambda を詳細に理解するのに役立ちます。
導入
- AWS Lambda を使用すると、サーバーをプロビジョニングしたり管理したりせずにコードを実行できます。使用したコンピューティング時間に対してのみ料金が発生します。コードが実行されていないときは料金は発生しません。
- Lambda を使用すると、ほぼすべての種類のアプリケーションやバックエンド サービスのコードを管理なしで実行できます。コードをアップロードするだけで、Lambda が高可用性を維持しながらコードを実行および拡張するために必要なすべての処理を実行します。
- 他の AWS サービスから自動的にトリガーされるようにコードを設定したり、任意の Web アプリケーションやモバイル アプリケーションから直接呼び出したりすることができます。
AWS でのビッグデータ分析のオプションAWS 上のさまざまなビッグデータ分析オプションの基本的な概要を紹介する一連の記事です。各記事では、各サービスを使用してビッグデータを収集、処理、保存、分析する方法について詳細なガイダンスを提供します。
理想的な使用モード
- AWS Lambda を使用すると、データの変更、システム状態の遷移、ユーザーアクションなどのトリガーイベントに応じてコードを実行できます。 Lambda は、Amazon S3、DynamoDB、Amazon Kinesis Data Streams、Amazon Simple Notification Service (Amazon SNS)、Amazon CloudWatch などの AWS サービスによって直接トリガーできるため、さまざまなリアルタイムデータ処理システムを構築できます。
- リアルタイムファイル処理– Lambda をトリガーして、Amazon S3 にファイルをアップロードしたり変更したりするプロセスを呼び出すことができます。たとえば、画像を Amazon S3 にアップロードした後、カラーからグレースケールに変更します。
- リアルタイムストリーム処理– Kinesis Data Streams と Lambda を使用して、クリックストリーム分析、ログフィルタリング、ソーシャルメディア分析のためのストリーミングデータを処理できます。
- 抽出、変換、ロード(ETL) – Lambda を使用してコードを実行し、あるデータ リポジトリから別のデータ リポジトリにデータを変換してロードできます。
- Cronの代替 – スケジュール式を使用して Lambda 関数を定期的に実行します。これは、EC2 インスタンスで cron を実行するよりも安価で可用性の高いソリューションです。
- AWS イベントの処理– AWS CloudTrail などの他の多くのサービスは、Amazon S3 にログを記録し、S3 バケット通知を使用して Lambda 関数をトリガーすることで、イベントソースとして機能できます。
コストモデル
- AWS Lambda では、使用した分だけ料金をお支払いいただきます。コストは、関数へのリクエストの数とコードの実行時間によって異なります。
- Lambda の無料利用枠には、1 か月あたり 100 万件の無料リクエストと、1 か月あたり 400,000 GB 秒のコンピューティング時間が含まれます。その後は、100 万リクエストごとに 0.20 ドル (リクエストあたり 0.0000002 ドル) が課金されます。さらに、コード実行時間の価格は割り当てられたメモリに関連しています。使用量 1 GB 秒ごとに 0.00001667 ドルが課金されます。
詳細については、「AWS Lambda の料金」をご覧ください。
パフォーマンス
- コードを Lambda に初めてデプロイすると、通常、関数はアップロード後数秒以内に呼び出すことができるようになります。 Lambda は、イベントを数ミリ秒以内に処理するように設計されています。
- Lambda 関数が作成または更新された直後、または最近使用されていない場合は、レイテンシが増加します。パフォーマンスを向上させるために、Lambda は新しいコピーを作成するのではなく、関数のインスタンスを 1 つ保持し、それを再利用して後続のリクエストを処理することを選択する場合があります。
- Lambda Provisioned Concurrency を使用すると、顧客はあらゆる規模のサーバーレス アプリケーションのパフォーマンスをより細かく制御できます。
- プロビジョニングされた同時実行を使用する関数は、一貫した起動レイテンシで実行されるため、インタラクティブなモバイルまたは Web バックエンド、レイテンシの影響を受けやすいマイクロサービス、同期的に呼び出される API の構築に最適です。
- プロビジョニングされた同時実行により、関数はトラフィックのバーストを即座に処理でき、各呼び出しの起動待ち時間は指定されたスケールで一定になります。
- Lambda が関数インスタンスを再利用する方法の詳細については、「Lambda の使用開始」を参照してください。コードでは、この再利用が常に発生すると想定しないでください。
耐久性と可用性
- AWS Lambda は、レプリケーションと冗長性を使用して、サービス自体とそれが実行する Lambda 関数の両方に高可用性を提供するように設計されています。
- どちらにもメンテナンス期間や計画的なダウンタイムはありません。障害が発生すると、同期的に呼び出された Lambda 関数は例外で応答します。
- 非同期に呼び出された Lambda 関数は少なくとも 3 回再試行され、その後はイベントが拒否される可能性があります。
スケーラビリティとレジリエンス
- 実行できる Lambda 関数の数に制限はありません。ただし、Lambda には、アカウントあたりリージョンあたり 1,000 回の同時実行というデフォルトの安全制限があります。
- AWS サポートチームのメンバーがこの制限を増やすことができます。 Lambda は、ユーザーに代わって自動的にスケールするように設計されています。拡張関数には基本的な制限はありません。 Lambda は、受信イベントのレートに合わせて容量を動的に割り当てます。
インタフェース
- Lambda 関数はさまざまな方法で管理できます。 Lambda コンソールのダッシュボードを使用すると、Lambda 関数を簡単に一覧表示、削除、更新、監視できます。 AWS CLI と AWS SDK を使用して Lambda 関数を管理することもできます。
- Amazon S3 バケット通知、Amazon DynamoDB ストリーム、Amazon CloudWatch ログ、Amazon Simple Email Service (Amazon SES)、Amazon Kinesis Data Streams、Amazon SNS、Amazon Cognito などの AWS イベントから Lambda 関数をトリガーできます。
- AWS CloudTrail をサポートする任意のサービスからの API 呼び出しは、CloudTrail 監査ログに応答することにより、Lambda でイベントとして処理できます。イベント ソースの詳細については、「Lambda イベント ソース」を参照してください。
- AWS Lambda は、Node.js (JavaScript)、Python、Java (Java 8 互換)、C# (.NET Core)、Go、PowerShell、Ruby で記述されたコードをサポートしています。コードには、ネイティブ ライブラリも含め、既存のライブラリを含めることができます。 Node.js、Python、Java、C#、Go、PowerShell、Ruby の使用については、AWS ドキュメントを参照してください。
- Docker CLI などのツールを使用して、Lambda 関数のコードと依存関係をコンテナ イメージとしてパッケージ化できます。その後、Amazon ECR でホストされているコンテナレジストリにイメージをアップロードできます。 Amazon ECR のコンテナレジストリと同じアカウントから Lambda 関数を作成する必要があることに注意してください。
アンチパターン
- AWS Lambda には次のアンチパターンがあります。
- 長時間実行されるアプリケーション— 各 Lambda 関数は 900 秒以内に完了する必要があります。ジョブを 15 分以上実行する必要がある可能性のある長時間実行アプリケーションの場合は、Amazon EC2、Amazon EKS、または Amazon ECS を使用することをお勧めします。あるいは、Step Functions を使用することもできます。
- ダイナミックウェブサイト— AWS Lambda を使用して静的な Web サイトを実行することもできますが、高度に動的で大容量の Web サイトを実行するとパフォーマンスに影響する可能性があります。 Amazon EC2、Amazon EKS、または Amazon ECS、および AWS CloudFormation の使用をお勧めします。
- ステートフルアプリケーション— Lambda コードは「ステートレス」スタイルで記述する必要があります。つまり、基盤となるコンピューティング インフラストラクチャとの結びつきを想定する必要はありません。ローカルファイルシステムのアクセス、サブプロセス、および同様のアーティファクトは、リクエストのライフサイクルを超えて拡張してはならず、永続的な状態は Amazon S3、DynamoDB、またはインターネット経由で利用可能なその他のストレージサービスに保存する必要があります。
オンクラウドAIAWS エージェントとして、Amazon クラウド サービスの提供、Amazon クラウド サーバーの AWS 支払いのサポート、AWS 移行、AWS 運用保守ホスティングなどのサービスを提供します。関連するニーズがございましたら、お問い合わせください。オンクラウドAI。