メニュー
AWS Lambda
開発者ガイド

概要: Lambda 関数のビルド

1 つ以上 Lambda 関数形式でアプリケーションコードを AWS Lambda (コンピューティングサービス) にアップロードすると、お客様のコードをサービスで実行できます。AWS Lambda によって、コードの呼び出し時にサーバーのプロビジョニングと管理が処理されます。

通常、AWS Lambda ベースアプリケーションのライフサイクルには、コードの作成、コードの AWS Lambda へのデプロイ、およびモニタリングとトラブルシューティングが含まれます。以下は、これらライフサイクルの各フェーズに関する一般的な質問です。

  • Lambda 関数のコード作成 – サポートされている言語は何ですか?従う必要があるプログラミングモデルはありますか?AWS Lambda にアップロードするにあたって、コードと依存関係をどのようにパッケージ化すればよいですか?使用できるツールは何ですか?

     

  • コードのアップロードと Lambda 関数の作成 – コードパッケージを AWS Lambda にどのようにアップロードすればよいですか?AWS Lambda にコードの実行開始場所をどのように指定すればよいですか?メモリやタイムアウトのようなコンピューティング要件をどのように指定すればよいですか?

     

  • モニタリングとトラブルシューティング – 本稼働の Lambda 関数の場合、どのようなメトリクスを使用できますか?エラーが出た場合に、ログの取得や問題のトラブルシューティングはどのようにすればよいですか?

以下のセクションでは、基本的な情報と説明します。また、後半の例のセクションでは使用例を挙げて解説します。

注記

このトピックでは、AWS Lambda ベースのアプリケーションの開発方法について、基本的な概要を説明します。「仕組み」セクションでは、Lambda 関数、イベントソース、および AWS Lambda での Lambda 関数の実行方法の仕様について説明します。

Lambda 関数のコードを作成する

Lambda 関数コードは、AWS Lambda でサポートされている言語で作成できます。サポートされている言語のリストについては、「Lambda 実行環境と利用できるライブラリ」を参照してください。コードの作成には、AWS Lambda コンソール、Eclipse IDE、Visual Studio IDE などのツールがあります。ただし、使用できるツールおよびオプションは以下の要因によって決まります。

  • Lambda 関数のコードの作成に選択した言語。

  • コードで使用するライブラリ。AWS Lambda ランタイムはライブラリの一部を提供します。他にライブラリを使用する場合はそれもアップロードする必要があります。

次の表は、言語、および使用できるツールとオプションを示します。

言語 コードを作成するためのツールとオプション 詳細

Node.js

選択した言語でコンパイルが不要な場合はコンソールを使用できます。コードは単一ファイルに保存され、ライブラリに依存しません。

Java

AWS Toolkit は、「コードをデプロイして Lambda 関数を作成する」で説明されているデプロイパッケージも作成します。

C#

AWS Toolkit は、「コードをデプロイして Lambda 関数を作成する」で説明されているデプロイパッケージも作成します。

Python

  • AWS Lambda コンソール

  • 独自の作成環境

選択した言語でコンパイルが不要な場合はコンソールを使用できます。コードは単一ファイルに保存され、ライブラリに依存しません。

また、使用する言語にかかわらず、Lambda 関数コードを記述するにはパターンがあります。たとえば、Lambda 関数のハンドラーメソッド (AWS Lambda がコードの実行を開始するときに最初に呼び出すメソッド) の記述方法、ハンドラーにイベントを渡す方法、CloudWatch Logs でログを生成するためにコード内に使用できるステートメント、AWS Lambda ランタイムを操作してタイムアウト前終了などの情報を取得する方法、および例外の処理方法などです。「プログラミングモデル」セクションで、サポートされる言語ごとに情報を説明しています。

注記

AWS Lambda の基本を学習した後は、「ユースケース」を参照してください。エンドツーエンドエクスペリエンスを活用する上で役立つ詳しい手順を説明しています。

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

Lambda 関数を作成するには、まずコードと依存関係をデプロイパッケージにパッケージ化します。次に、デプロイパッケージを AWS Lambda にアップロードして Lambda 関数を作成します。

デプロイパッケージを作成する – コードと依存関係を組織化する

最初に、コードと依存関係を特定の方法で組織化してデプロイパッケージを作成する必要があります。デプロイパッケージを作成する手順は、コードの作成に選択した言語によって異なります。たとえば、Jenkins (Node.js および Python の場合) や Maven (Java の場合) などのビルドプラグインを使用してデプロイパッケージを作成できます。詳細については、「デプロイパッケージの作成」を参照してください。

コンソールを使用して Lambda 関数を作成する場合は、コンソールによってデプロイパッケージが作成され、Lambda 関数を作成するためにアップロードされます。

デプロイパッケージをアップロードする – Lambda 関数を作成する

AWS Lambda には、「CreateFunction」オペレーションがあり、これを使用して Lambda 関数を作成できます。AWS Lambda コンソール、AWS CLI、AWS SDK を使用して Lambda 関数を作成できます。内部的には、これらのインターフェイスはすべて、CreateFunction オペレーションを呼び出します。

デプロイパッケージの指定に加えて、Lambda 関数のコンピューティング要件、Lambda 関数内のハンドラーメソッド名、ランタイム (コードの作成に選択した言語によって異なります) などの設定情報を Lambda 関数の作成時に指定できます。詳細については、「Lambda 関数」を参照してください。

注記

このセクションでは、AWS Lambda ベースのアプリケーションの開発について、基本的な概要を説明します。「仕組み」では、Lambda 関数、イベントソース、および AWS Lambda での Lambda 関数の実行方法の仕様について説明します。

Lambda 関数のテスト

Lambda 関数が特定のタイプのイベントを処理するように設計されている場合、サンプルイベントデータを使用して、以下の方法で Lambda 関数をテストできます。

  • コンソールで Lambda 関数をテストします。

  • AWS CLI を使用して Lambda 関数をテストします。Invokeメソッドを使用して Lambda 関数を呼び出し、サンプルイベントデータを渡すことができます。

コンソールは、サンプルイベントデータを提供します。同じデータが、「イベントソースによって公開されたサンプルイベント」トピックでも提供されています。これを AWS CLI で使用して Lambda 関数を呼び出すことができます。

モニタリングとトラブルシューティング

Lambda 関数の本稼働後は、AWS Lambda がユーザーに代わって自動的に関数をモニタリングし、Amazon CloudWatch を通じてメトリクスをレポートします。詳細については、「AWS Lambda の Amazon CloudWatch メトリクスへのアクセス」を参照してください。

関数の失敗をトラブルシューティングするため、Lambda は関数で処理されたすべてのリクエストをログに記録し、コードで Amazon CloudWatch Logs に生成されたログを自動的に保存します。詳細については、「AWS Lambda の Amazon CloudWatch ログへのアクセス」を参照してください。

AWS Lambda ベースアプリケーションの例

このガイドでは、詳細な手順の説明を含むさまざまな例を提供しています。AWS Lambda を初めて使用する場合は、以下の実習をお勧めします。

  • ご利用開始にあたって – 「開始方法」の実習では、コンソールベースの操作が提供されます。サンプルコードは Python で作成されています。コードをコンソールで編集、AWS Lambda にアップロード、コンソールで提供されるサンプルイベントデータを使用してテストできます。

     

  • ユースケース」 – コンソールを使用してコードを作成できない場合は、独自にデプロイパッケージを作成し、AWS CLI (または SDK) を使用して Lambda 関数を作成する必要があります。詳細については、「Lambda 関数のコードを作成する」を参照してください。ユースケースセクションの例のほとんどは、AWS CLI を使用します。AWS Lambda を初めて使用する場合は、以下の実習のいずれかをお勧めします。

ここで示している各トピックで、さらに詳しく学習できます。

プログラミングモデル

デプロイパッケージの作成

AWS Lambda 関数のバージョニングとエイリアス

Amazon CloudWatch を使用した AWS Lambda 関数のトラブルシューティングとモニタリング