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

.zip デプロイパッケージの作成 (Java)

このセクションでは、デプロイパッケージとして .zip ファイルを作成する例を示します。この zip を作成するには、任意のビルドおよびパッケージ化ツールを使用できます。使用するツールにかかわらず、結果的に生じる .zip ファイルには次の構造が必要です。

  • ルートレベルでコンパイルされたすべてのファイルおよびリソースファイル。

  • /lib ディレクトリでコードを実行するために必要なすべての jar。

注記

デプロイパッケージとしてスタンドアロン .jar (圧縮ファイル) をビルドすることもできます。Maven を使用したスタンドアロン .jar の作成例については、「デプロイパッケージの作成 (Java)」を参照してください。

次の例では、Gradle のビルドおよびデプロイツールを使用して .zip を作成します。

重要

Gradle バージョン 2.0 以降が必要です。

開始する前に

Gradle をダウンロードする必要があります。手順については、gradle のウェブサイト、https://gradle.org/ を参照してください。

例 1: Gradle と Maven セントラルリポジトリを使用した .zip の作成

このウォークスルーの終了時には、以下の構造のコンテンツを持つプロジェクトディレクトリ (project-dir) が作成されます。

Copy
project-dir/build.gradle project-dir/src/main/java/

/java フォルダーにはコードが含まれます。たとえば、パッケージ名が example で、このパッケージに Hello.java クラスがある場合、構造は次のようになります。

Copy
project-dir/src/main/java/example/Hello.java

プロジェクトを作成した後に結果的に生じる .zip ファイル (デプロイパッケージ) は、project-dir/build/distributions サブディレクトリにあります。

  1. プロジェクトディレクトリ (project-dir) を作成します。

  2. project-dirbuild.gradle ファイルを作成し、以下のコンテンツを追加します。

    Copy
    apply plugin: 'java' repositories { mavenCentral() } dependencies { compile ( 'com.amazonaws:aws-lambda-java-core:1.1.0', 'com.amazonaws:aws-lambda-java-events:1.1.0' ) } task buildZip(type: Zip) { from compileJava from processResources into('lib') { from configurations.runtime } } build.dependsOn buildZip

    注記

    • リポジトリセクションは Maven セントラルリポジトリを参照します。作成時には、Maven 中央レポジトリから依存関係 (2 つの AWS Lambda ライブラリ) を取得します。

    • buildZip タスクは、デプロイパッケージの .zip ファイルを作成する方法を示しています。

      たとえば、結果として生じる .zip ファイルを解凍する場合、ルートレベルでコンパイルされたクラスファイルとリソースファイルがすべて見つかります。また、コードを実行するために必要な jar とともに、/lib ディレクトリも見つかります。

    • このガイドの他のチュートリアル トピックに従っている場合、特定のチュートリアルでは依存関係の追加が必要になることがあります。必ず、それらの依存関係を必要に応じて追加してください。

  3. project-dir で、以下の構造を作成します。

    Copy
    project-dir/src/main/java/

  4. /java サブディレクトリで、Java ファイルとフォルダー構造 (ある場合) を追加します。たとえば、Java パッケージ名が example で、ソースコードが Hello.java の場合、ディレクトリ構造は次のようになります。

    Copy
    project-dir/src/main/java/example/Hello.java
  5. 次の gradle コマンドを実行して、.zip ファイルにプロジェクトをビルドおよびパッケージ化します。

    Copy
    project-dir> gradle build
  6. project-dir/build/distributions サブディレクトリで、結果的に生じる project-dir.zip ファイルを確認します。

  7. これでデプロイパッケージの .zip ファイルを AWS Lambda にアップロードして Lambda 関数を作成し、サンプルイベントデータを使ってこれを手動で呼び出してテストできます。手順については、 ステップ 2.3: (オプション) Java で Lambda 関数を作成する

例 2: ローカル jar を使用した Gradle による .zip の作成

Maven セントラルリポジトリを使用しない選択もできます。代わりに、すべての依存関係をプロジェクトフォルダーに含めます。この場合、プロジェクトフォルダー (project-dir) は次の構造になります。

Copy
project-dir/jars/ (all jars go here)         project-dir/build.gradle          project-dir/src/main/java/ (your code goes here)

したがって、Java コードに example パッケージと Hello.java クラスがある場合、コードは次のサブディレクトリにあります。

Copy
project-dir/src/main/java/example/Hello.java

build.gradle ファイルは次のようになります。

Copy
apply plugin: 'java' dependencies { compile fileTree(dir: 'jars', include: '*.jar') } task buildZip(type: Zip) { from compileJava from processResources into('lib') { from configurations.runtime } } build.dependsOn buildZip

依存関係は、すべての必要な jar を含むサブディレクトリとして project-dir/jars を識別する fileTree を指定することに注意してください。

ここで、パッケージをビルドします。次の gradle コマンドを実行して、.zip ファイルにプロジェクトをビルドおよびパッケージ化します。

Copy
project-dir> gradle build