すべてのプロダクト
Search
ドキュメントセンター

Function Compute:カスタムランタイムでレイヤーの依存関係を参照する方法

最終更新日:Sep 04, 2024

カスタムランタイムでは、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);