自訂運行時內建了多種語言版本,比如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);