全部产品
Search
文档中心

函数计算:如何在自定义运行时中引用层中的依赖

更新时间:Dec 20, 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语言中引用层中的依赖

  • 方式一:在函数配置中设置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);