カスタムランタイムでは、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がMANIFEST.MFを使用し、すべての環境変数とコマンドラインの指定された検索パスが無視されることを示します。 この場合、CLASSPATH
パラメーターの値は有効になりません。
PHPのカスタムランタイムでのレイヤーの依存関係の参照
プロジェクトのハンドラーファイルに次のステートメントを追加できます。 レイヤーの依存関係ライブラリをインポートする前に、ステートメントを実行する必要があります。
<?php
$path = '/opt/php';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);