AWS Lambda

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

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

Lambda API を使用して [Lambda 関数](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/gettingstarted-concepts.html#gettingstarted-concepts-function)を呼び出したり、他の AWS のサービスからのイベントに応答してLambda が関数を実行したりできます 例えば、Lambda を使用して以下のことができます。

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

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

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

Lambda は可用性の高いサービスです。詳細については、「[AWS Lambda サービスレベルアグリーメント](https://aws.amazon.com/cn/lambda/sla/)」を参照してください。

# セクション

- [Lambda が適している用途](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html#when-to-use-cloud-functions)
- [Lambda の機能](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html#features)
- [Lambda の開始方法](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html#welcome-first-time-user)
- [関連サービス](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html#related-services)
- [Lambda へのアクセス](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html#accessing)
- [Lambda の料金](https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html#pricing)
# 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 料金を参照してください。

# 参考
https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/welcome.html