自定義運行時內置了多種語言版本,比如Python、Node.js、Java和PHP等,這些語言的層打包的方法和原生運行時是一致的。但是在自定義運行時中,您需要將層依賴所在目錄添加到運行時語言的依賴包搜索路徑中。本文介紹自定義運行時內各語言引用層中依賴的方法。
示例說明
本文添加層所在目錄的示例,如/opt/python僅為推薦的目錄,如果您是按照創建自定義層頁面步驟構建的層ZIP包,則層會默認部署到該目錄下。否則,請先確認您構建層ZIP包的目錄結構,然后將/opt/python替換為實際的目錄。
例如,您的層ZIP包內的目錄名為my-layer-code,那么層會部署到/opt/my-layer-code目錄下。您需要在函數配置中設置環境變量時,或者代碼中增加依賴庫搜索路徑時使用/opt/my-layer-code路徑。
在自定義運行時Python語言中引用層中的依賴
方式一:在函數配置中設置
PYTHONPATH
環境變量,添加層所在的目錄。示例如下。
PYTHONPATH=/opt/python
方式二:在您項目的入口文件里添加以下語句,需要在導入層的依賴庫前執行。
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語言中引用層中的依賴
方式一:在啟動命令中設置
-classpath
參數,添加層所在/opt/java/lib/*目錄。java -Dserver.port=9000 -classpath /code/:/opt/java/lib/* com.example.demo.DemoApplication
方式二:在函數配置中設置
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);