LoginSignup
18
16

More than 5 years have passed since last update.

【初心者向け】AWS Lambdaの超基礎

Last updated at Posted at 2018-10-10

注意

公式サイトやいろんなサイト見て、自分なりにまとめたり、言い換えたりしたものです。
AWSは、EC2,S3,CloudFront,CloudWatch,コピペLambda関数の使用経験があります。
がっつりLambdaを触る上で、理解が必要になったので知識の整理のためにまとめます。

Lambdaとは

サーバーの準備・管理をしなくても、コードを実行できるサービス。
Lambdaは必要に応じてコードを実行して、その使用時間に対して料金を払う。だから使い方によってはすごく安い。
現在のサポート言語は、Node.js、Java、C#、Go および Pythonです。
コンピューティングリソースはLambdaが管理するので、実行するコードにだけ集中することができる。
逆に言えば、コンピューティングしているインスタンスにログインしたり、言語のランタイムをカスタマイズする、といった細かいことが出来ない。

Lambda関数

参考:Lambda関数のビルド

Lambda関数のビルド

Lambdaに関数をアップロードするだけ。こうすると、僕らの代わりにLambdaが関数を実行してくれる。

ライフサイクル

Lambda関数のライフサイクルは以下。

  • コードの作成
  • コードをデプロイしてLambda関数を作成
  • 監視とトラブルシューティング

コードの作成

サポートされている言語で書くことができる。
コードの作成はLambdaのコンソール画面か、IDEが使える。
ただし、使用できるIDEや各種ツール・オプションなどは、言語とコードで使用するライブラリに依存する。

言語によらず言えること

Lambdaで記述するコードにはパターンがある。
長くなるので、別途後述する。

コードをデプロイしてLambda関数を作成

デプロイパッケージを作成して、それをLambdaにアップロードするとLambda関数を作成できる。

デプロイパッケージの作成について

コードとその依存関係を特定方法で組織化してデプロイパッケージを作成できる。手順は言語によって異なる。
自分で作成するか、Lambdaのコンソールで作成できる。
Lambdaコンソールでコードを直接記述すると、コンソールによってデプロイパッケージの作成とアップロードが行われ、Lambda関数が作成される。
参考:デプロイパッケージの作成(Node.js)

Lambda関数のテスト

サンプルデータを利用してテストできる。
Lambdaコンソールでも、AWS CLIでも可能。


監視とトラブルシューティング

CloudWatchを通じてメトリクスをレポートすると、監視できる。
ログに関しても、CloudWathc Logsに自動的に保存される。

プログラミングモデル

参考:プログラミングモデル
前述で割愛した内容をここに書きます。
使用する言語に関わらず、パターンがある。

  • Handler
  • contextオブジェクトと実行時のLambdaの動作
  • ログ記録
  • 例外

Handler

Handlerは関数です。
どんな関数かというと、AWS LambdaがLambda関数の実行を開始するために呼び出す関数です。
僕らがLambda関数を作成するときは、Handlerを識別する。
Lambda関数が呼び出されると、AWS LambdaはHandler関数を呼び出してコードの実行を開始する。
AWS LambdaはこのHandlerに、最初のパラメータとしてイベントデータを渡す。
Handlerは渡されたデータを処理する必要があるし、コード内の他の関数も呼び出せる。

contextオブジェクトと実行時のLambdaの動作

Handlerに渡す2番目のパラメータは、contextオブジェクトです。
ちなみにcontextの言葉の意味は、プログラムの置かれた状況という意味である。
参考:IT時点
このcontextオブジェクトにより、AWS Lambdaとやり取りができる。
例えば、Lambda関数終了させるまでの実行時間とかを確認できる。

さらに、追加のメソッドも提供されている。

ログ記録

Lambda関数にログ記録の状態を含めることができる。
そのログを、CloudWatch Logsに書き込む。

例外

Lambda関数は、その関数の実行結果をAWS Lambdaに伝える必要がある。
記述する言語に応じて、リクエストを正常に終了する方法や、発生したエラーをAWS Lambdaに通知する方法は変わる。

Node.jsのプログラミングモデル

Lambdaのユースケース

AWS Lambdaの使用方法の例は以下から確認できます。
参考:AWS Lambda の使用方法の例

18
16
4

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
18
16