カスタムランタイムでは、Python、Node.js、Java、PHPなど、さまざまなバージョンの複数の言語がサポートされます。 これらの言語のレイヤーパッケージング方法は、ネイティブランタイムと同じです。 ただし、カスタムランタイムでは、レイヤーの依存関係が格納されているディレクトリを、ランタイム言語の依存関係パッケージ検索パスに追加する必要があります。 このトピックでは、異なる言語のカスタムランタイムで依存関係を参照する方法について説明します。
例
このトピックでは、/opt/pythonなど、レイヤーが配置されているディレクトリが推奨されます。 「カスタムレイヤーの作成」で説明されている手順に基づいてレイヤーZIPパッケージを作成すると、デフォルトでレイヤーがこれらのディレクトリに配置されます。 それ以外の場合は、まずレイヤーZIPパッケージのディレクトリ構造を確認し、/opt/pythonを実際のディレクトリに置き換えます。
たとえば、レイヤーZIPパッケージのディレクトリがmy-layer-codeの場合、レイヤーは /opt/my-layer-codeディレクトリにデプロイされます。 関数設定で環境変数を設定するとき、またはコードに依存関係ライブラリの検索パスを追加するときは、/opt/my-layer-codeディレクトリを使用する必要があります。
カスタムランタイムのレイヤーの依存関係を参照する-Python
方法1: 関数設定で
PYTHONPATH
環境変数を設定し、レイヤーが配置されているディレクトリを追加します。サンプルコード:
PYTHONPATH=/opt/python
方法2: プロジェクトのエントリファイルに次の文を追加します。 このステートメントは、レイヤーの依存関係ライブラリをインポートする前に実行する必要があります。
import sys sys.path.append('/opt/python') # import {PackageFromLayer}
詳細については、サンプルの「python-demo-with-lib-in-layer」をご参照ください。
カスタムランタイムのレイヤーの依存関係を参照する-Node.js
関数設定でNODE_PATH
環境変数を設定し、レイヤーが配置されているディレクトリを追加します。 詳細については、サンプルの「nodejs-demo-with-lib-in-layer」をご参照ください。
NODE_PATH=/opt/nodejs/node_modules
カスタムランタイムのレイヤーの依存関係を参照する-Java
方法1: スタートアップコマンドで
-classpath
パラメーターを設定し、レイヤーが配置されている /opt/java/lib/* ディレクトリを追加します。java -Dserver.port=9000 -classpath /code/:/opt/java/lib/* com.example.demo.DemoApplication
方法2: 関数設定で
CLASSPATH
環境変数を設定し、レイヤーの依存関係があるディレクトリを追加します。CLASSPATH=/code/:/opt/java/lib/*
CLASSPATH
環境変数を使用する場合、-JAR
パラメーターを使用してjarパッケージを指定してプログラムを実行することはできません。 たとえば、java -classpath ${CLASSPATH} -jar yourJarExe.jar
の例では、-jar
パラメーターが使用されます。 Java JVMは、JARパッケージでMANIFEST.MFを使用します。 環境変数およびコマンドラインで指定された検索パスはすべて無視されます。 CLASSPATH
は有効になりません。
カスタムランタイムのレイヤーの依存関係を参照する-PHP
プロジェクトのエントリファイルに次の文を追加します。 このステートメントは、レイヤーの依存関係ライブラリをインポートする前に実行する必要があります。
<?php
$path = '/opt/php';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);