自定义运行时内置了多种语言版本,比如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);