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

Function Compute:カスタムランタイムでレイヤーの依存関係を参照するにはどうすればよいですか?

最終更新日:Jul 24, 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がMANIFEST.MFを使用し、すべての環境変数とコマンドラインの指定された検索パスが無視されることを示します。 この場合、CLASSPATHパラメーターの値は有効になりません。

PHPのカスタムランタイムでのレイヤーの依存関係の参照

プロジェクトのハンドラーファイルに次のステートメントを追加できます。 レイヤーの依存関係ライブラリをインポートする前に、ステートメントを実行する必要があります。

<?php
$path = '/opt/php';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);