第3章 AWS Lambda関数のプログラミング
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
この章では、Lambda関数を構築するとはどういうことなのか、Lambda関数がどのように見えるのか、Lambda関数の実行方法をどのように設定するのか、独自の環境設定をどのように指定するのかを掘り下げていく。 Lambdaの実行環境、入力と出力、タイムアウト、メモリとCPU、そして最後に、Lambdaがアプリケーション設定のために環境変数をどのように使用するのか、といった核となる概念を検討することで、これらのトピックについて学んでいく。
手始めに、Lambda関数がどのように実行されるかを見てみよう。ハイキング・ブーツを手に、探検の時間だ。
核となる概念:ランタイムモデル、呼び出し
第2章で、あなたは 、Javaクラスを作成し、それを漠然とした「クラウド」のどこかにあるLambdaサービスにアップロードし、魔法のようにそのコードを実行することができた。 あなたは、オペレーティングシステム、コンテナ、スタートアップスクリプト、実際のホストへのコードのデプロイ、JVMの設定などを考慮する必要はなかった。 また、厄介な「サーバ」のことも考えなかった。では、あなたのコードはどのように実行されたのか?
これを理解するには、図3-1に示すように、まずLambda実行環境の基本を理解する必要がある。
図3-1. Lambdaの実行環境
ラムダの実行環境
第2章(「AWS CLIのインストール」参照)で触れたように、AWSの管理も関数の演算子(それぞれコントロールプレーン、データプレーンと呼ばれることが多い)も、APIを多用している。Lambdaも同様で、関数の管理と関数の実行の両方にAPIを提供している。
AWS Lambda APIのinvoke コマンドが呼び出されるたびに、 関数が実行、つまり呼び出しされる。 これは以下のタイミングで発生する:
-
関数がイベントソースによってトリガーされた場合
-
ウェブ・コンソールでテスト・ハーネスを使用する場合
-
Lambda API
invokeコマンドを自分のコードやスクリプトから自分で呼び出す場合、通常はCLIやSDKを使用する。
関数を初めて呼び出すと、次のような一連の動作が始まり、最終的にあなたのコードが実行される。
まず、LambdaサービスはホストLinux環境(軽量なマイクロ仮想マシン)を作成する。通常、どのような環境なのか(どのカーネルなのか、どのディストリビューションなのか、など)の正確な性質を気にする必要はないが、気にするのであれば、Amazonはその情報を公開している。Amazonは、Lambda関数のOSに頻繁に変更を加えることができ、また実際に行っている。
ホスト環境が作成されると、Lambdaはその中で言語ランタイム(ここではJava仮想マシン)を起動する。この記事を書いている時点では、JVMのバージョンは常にJava 8かJava 11だ。 Lambdaには、選択したJavaのバージョンと互換性のあるコードを提供しなければならない。 JVMは、変更できない環境フラグのセットで起動する。
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access