4
7

More than 1 year has passed since last update.

AWS Lambda

Posted at

AWS Lambda とは

Lambda はサーバーをプロビジョニングしたり管理しなくてもコードを実行できるコンピューティングサービスです。Lambda は可用性の高いコンピューティングインフラストラクチャでコードを実行し、コンピューティングリソースの管理をすべて担当します。これにはサーバーおよびオペレーティングシステムのメンテナンス、容量のプロビジョニングおよびオートスケーリング、コードのモニタリングおよびログ記録などが含まれます。Lambda を使用すると、実質どのようなタイプのアプリケーションやバックエンドサービスに対してもコードを実行できます。必要なのは、Lambda がサポートするいずれかの言語でコードを指定することだけです。

コードを Lambda 関数に整理します。Lambda は必要に応じて関数を実行し、1 日あたり数個から 1 秒あたり数千個のリクエストまで自動的にスケーリングします。課金は実際に消費したコンピューティング時間に対してのみ発生します。コードが実行されていない場合、料金は発生しません。

Lambda API を使用して Lambda 関数を呼び出したり、他の AWS のサービスからのイベントに応答してLambda が関数を実行したりできます 例えば、Lambda を使用して以下のことができます。

  • AWS のサービス (Amazon Simple Storage Service (Amazon S3) や Amazon DynamoDB など) のデータ処理トリガーの構築。

  • Amazon Kinesis に保存されたストリーミングデータの処理。

  • AWS 規模、パフォーマンス、セキュリティで動作する独自のバックエンドの作成。

Lambda は可用性の高いサービスです。詳細については、「AWS Lambda サービスレベルアグリーメント」を参照してください。

セクション

Lambda が適している用途

Lambda は、多くのアプリケーションシナリオにとって最適なコンピューティングサービスです。Lambdaによって提供されるリソース内で - Lambda スタンダードランタイム環境を使用しながら、アプリケーションのコードを実行できます。

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

AWS では、独自のコンピューティングリソースを管理する必要があるお客様に対しても、その目的に適した、他のコンピューティングサービスをご用意しています。次に例を示します。

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

AWS Elastic Beanstalk では、アプリケーションを Amazon EC2 にデプロイし、スケーリングできます。基盤となる EC2 インスタンスに対する所有権と完全なコントロール権は、お客様が保持します。

Lambda の機能

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

同時実行とスケーリングコントロール

同時実行制限やプロビジョニングされた同時実行などの 同時実行とスケーリング制御 により、製品アプリケーションのスケーリングと応答性をきめ細かく制御できます。

コンテナイメージとして定義された関数

お好きなコンテナイメージツール、ワークフロー、依存関係を使用して、Lambda 関数を構築、テスト、デプロイできます。

コード署名

Lambda のコード署名により、信頼性と整合性を管理できます。それにより、承認されたデベロッパーによって公開された未変更のコードのみが、Lambda 関数にデプロイされていることを確認できます。

Lambda の拡張

Lambda 拡張機能を使用して Lambda 関数を補強できます。拡張機能を使用すると、モニタリング、観測、セキュリティ、ガバナンス用のお気に入りのツールと Lambda を容易に統合できます。

関数ブループリント

関数ブループリントは、他の AWS サービスやサードパーティーのアプリケーションで Lambda を使用する方法を示すサンプルコードを提供します。ブループリントには、Node.js および Python ランタイム用のサンプルコードおよび関数設定プリセットが含まれています。

データベースアクセス

データベースプロキシ は、データベース接続のプールを管理し、関数からのクエリを中継します。これにより、関数はデータベース接続を使い果たすことなく、同時実行レベルを上げることができます。

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

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

Lambda の開始方法

Lambda を効果的に操作するには、次のドメインにおけるコーディングの経験と専門知識が必要です。

  • Linux OS とコマンド、および、プロセス、スレッド、ファイル権限などの概念。

  • クラウドの概念と IP ネットワークの概念 (パブリックネットワークとプライベートネットワーク)。

  • IPC、キュー、メッセージング、通知、同時実行としての、HTTP などの分散コンピューティングの概念。

  • セキュリティサービスと概念に精通していること: AWS Identity and Access Management (IAM) とアクセス制御の原則、およびAWS Key Management Service (AWS KMS) と公開キーインフラストラクチャ。

  • Lambda と対話する主要なサービスに関する知識: Amazon API Gateway、Amazon S3、Amazon Simple Queue Service (Amazon SQS)、DynamoDB。

  • Linux を使用して EC2 インスタンスを設定する。

  1. Lambda を初めて使用する場合は、ベーシックな学習に役立つ以下のトピックからスタートすることをお勧めします。

  2. Lambda の製品概要と、「Lambda 使用開始」ページをお読みください。

  3. Lambda コンソールを使用して Lambda 関数を作成してテストするには、コンソールベースの使用開始演習をお試しください。この演習では、Lambda プログラミングモデルやその他の概念について説明します。

コンテナイメージのワークフローに精通しているという場合は、使用開始演習を実行して、コンテナイメージとして定義された Lambda 関数を作成してください。

  • AWS では、サーバーレスアプリケーションと Lambda について学習するための次のリソースも提供しています。

  • AWS コンピューティングブログには Lambda に関する役立つ記事が掲載されています。

  • AWS Serverless は AWS サーバーレス開発に関連するブログ、ビデオ、トレーニングを提供します。

AWS オンラインテクニカルトーク YouTube チャンネルには、Lambda 関連トピックに関する動画が投稿されています。サーバーレスアプリケーションと Lambda の概要については、「AWS Lambda とサーバーレスアプリケーションの概要」ビデオを参照してください。

Lambda へのアクセス

次のいずれかのインタフェースを使用して、Lambda 関数を作成、呼び出し、管理できます。

  • AWS マネジメントコンソールは、関数にアクセスするためのウェブインターフェースを提供します。詳細については、「Lambda コンソール」を参照してください。

  • AWS Command Line Interface (AWS CLI) – Lambda を含むさまざまな AWS サービス用のコマンドを備え、Windows、macOS、Linux でサポートされています。詳細については、「AWS CLI での Lambda の使用」を参照してください。

  • AWS SDK – 言語固有の API を提供し、署名の計算、リクエストの再試行処理、エラー処理など、各種接続の詳細を管理します。詳細については、AWSSDK をご参照ください。

  • AWS CloudFormation – Lambda アプリケーションを定義するテンプレートを作成します。詳細については、「AWS Lambda アプリケーション 」を参照してください。AWS CloudFormation は AWS Cloud Development Kit (CDK)もサポートしています。

  • AWS Serverless Application Model (AWS SAM) – AWSサーバレスアプリケーションを設定および管理するためのテンプレートと CLI を提供します。詳細については、「SAM CLI」を参照してください。

Lambda の料金

Lambda 関数の作成に追加料金はかかりません。関数の実行や、Lambda と他の AWS サービス間のデータ転送には料金が発生します。一部のオプション Lambda 機能 (プロビジョニングされた同時実行など) にも料金が発生します。詳細については、AWS Lambda 料金を参照してください。

参考

4
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
7