Em um custom runtime, o Function Compute monta o conteúdo da camada no diretório /opt, mas não adiciona esse caminho automaticamente ao caminho de busca de módulos do runtime. Diferentemente dos runtimes gerenciados, os custom runtimes não possuem configuração de caminho integrada. Por isso, registre o diretório da camada na linguagem do seu runtime por meio de uma variável de ambiente ou de uma chamada de caminho no código.
Esta página aborda Python, Node.js, Java e PHP.
Como funciona
Ao anexar uma camada a uma função, o Function Compute extrai o arquivo .zip da camada para /opt. O subdiretório resultante depende da forma como você empacotou a camada:
Se você seguiu o guia Crie uma camada personalizada, o conteúdo fica no subdiretório padrão da sua linguagem (por exemplo,
/opt/python).Se você utilizou um nome de diretório personalizado (como
my-layer-code), o conteúdo fica em/opt/my-layer-code.
Use o caminho real do diretório ao configurar variáveis de ambiente ou defina o caminho de busca no código.
Referência rápida
|
Linguagem |
Método de configuração |
Valor |
|
Python |
Variável de ambiente |
|
|
Python |
|
|
|
Node.js |
Variável de ambiente |
|
|
Java |
|
|
|
Java |
Variável de ambiente |
|
|
PHP |
|
|
Python
Escolha um dos métodos a seguir.
Método 1: Defina a variável de ambiente PYTHONPATH
Adicione o diretório da camada à variável de ambiente PYTHONPATH da sua função:
PYTHONPATH=/opt/python
Método 2: Modifique o arquivo do handler
Adicione as linhas a seguir no início do arquivo do handler, antes de qualquer importação da camada:
import sys
sys.path.append('/opt/python')
# import <PackageFromLayer>
Para ver um exemplo funcional, consulte python-demo-with-lib-in-layer.
Node.js
Defina a variável de ambiente NODE_PATH na sua função:
NODE_PATH=/opt/nodejs/node_modules
Para ver um exemplo funcional, consulte nodejs-demo-with-lib-in-layer.
Java
Escolha um dos métodos a seguir.
Método 1: Usar -classpath no comando de inicialização
Adicione /opt/java/lib/* ao parâmetro -classpath no seu comando de inicialização:
java -Dserver.port=9000 -classpath /code/:/opt/java/lib/* com.example.demo.DemoApplication
Método 2: Defina a variável de ambiente CLASSPATH
Adicione o diretório da camada à variável de ambiente CLASSPATH da sua função:
CLASSPATH=/code/:/opt/java/lib/*
Se você usar CLASSPATH, não use o parâmetro -jar para iniciar sua aplicação. Quando o Java executa com -jar, a JVM lê o ponto de entrada do MANIFEST.MF e ignora todas as configurações de classpath definidas em variáveis de ambiente ou argumentos de linha de comando. Por exemplo, o comando a seguir não carrega as dependências da camada:
java -classpath ${CLASSPATH} -jar yourJarExe.jar
PHP
Adicione as linhas a seguir no início do arquivo do handler, antes de qualquer importação da camada:
<?php
$path = '/opt/php';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);