O WebIDE opera no mesmo ambiente de execução do Function Compute. Por isso, os pacotes instalados no terminal do WebIDE apresentam comportamento idêntico durante a execução. Este tópico explica como instalar e empacotar dependências de terceiros para runtimes Python, Node.js, PHP e personalizados.
Escolha uma abordagem de instalação
Para cada runtime, instale as dependências de duas formas:
|
Abordagem |
Quando usar |
Diretório |
|
Instalar diretamente no diretório de código |
Dependências pequenas e implantações frequentes |
|
|
Empacotar dependências como uma camada |
Dependências grandes e alterações pouco frequentes |
Específico do runtime (consulte as seções abaixo) |
Conjuntos extensos de dependências aumentam a latência de inicialização a frio, o tamanho do pacote de código da função e o tempo de implantação. Empacotá-las como uma camada separa o ciclo de vida das dependências do código da função. Assim, atualize a camada apenas quando houver mudança nas dependências, e não a cada implantação.
Pré-requisitos
Antes de começar, verifique se você possui:
Uma função criada no Function Compute com uma instância do WebIDE em execução
Acesso ao terminal do WebIDE
Python
Os runtimes Python incluem um conjunto de módulos Python integrados. Para qualquer módulo fora dessa lista, instale-o pelo terminal do WebIDE.
Instalar diretamente em /code
Execute o comando a seguir no diretório /code do terminal do WebIDE:
pip install -t . flask
# Or, using a requirements file:
pip install -t . -r requirements.txt
Instalar pacotes diretamente em /code os coloca junto ao código da sua função. Com muitos pacotes instalados, localizar o arquivo index.py no gerenciador de recursos torna-se difícil, pois o diretório fica preenchido com arquivos e pastas de pacotes. Se isso for um problema, prefira instalar em um diretório separado.
Instalar em um diretório separado
Para manter o diretório de código organizado, instale os pacotes em um subdiretório /python e defina uma variável de ambiente para que o runtime possa encontrá-los:
mkdir python
cd python
pip install -t . flask
Adicione a variável de ambiente PYTHONPATH=/code/python à configuração da sua função.
Empacotar como uma camada
Caso o conjunto de dependências seja grande, empacote o diretório /python como uma camada. Essa prática reduz o tamanho do pacote de código da função e acelera as implantações subsequentes.
Ao utilizar/pythoncomo diretório da camada, o Function Compute o adiciona automaticamente ao caminho de busca do Python. Não é necessário definirPYTHONPATH=/opt/python.
Execute os comandos a seguir em sequência:
# Step 1: Archive the python directory
zip -ry python.zip python
# Step 2: Publish the archive as a layer
s cli fc3 layer publish \
--layer-name myPythonLibLayer \
--code /code/python.zip \
--compatible-runtime python3.10,python3.9,python3.6,custom,custom.debian10 \
--region cn-hangzhou \
-a default
O comando retorna o ARN da camada, por exemplo:
395da10bf789aa49dd035db01bab****#myPythonLibLayer#1
Após publicar a camada:
Atualize a configuração da função para referenciar a nova versão da camada.
-
Exclua o diretório local
/pythone o arquivo compactado para reduzir o tamanho do pacote de código da função:rm -rf python python.zip Implante a função atualizada.
Para obter instruções sobre como criar e referenciar camadas, consulte Criar uma camada personalizada e Configurar uma camada personalizada.
Node.js
Os runtimes Node.js incluem um conjunto de módulos Node.js integrados. Para qualquer módulo ausente nessa lista, instale-o via terminal do WebIDE.
Instalar diretamente em /code
Certifique-se de que o arquivo package.json exista em /code e execute:
npm install
Empacotar como uma camada
Se o volume de dependências for elevado, mova o diretório node_modules para dentro de um diretório /nodejs e empacote-o como uma camada:
# Step 1: Move node_modules into the nodejs directory
mkdir nodejs
mv node_modules ./nodejs
# Step 2: Archive the directory
zip -ry nodejs.zip nodejs
# Step 3: Publish the archive as a layer
s cli fc3 layer publish \
--layer-name myNodeLibLayer \
--code /code/nodejs.zip \
--compatible-runtime nodejs16,nodejs14,nodejs12,nodejs10,custom,custom.debian10 \
--region cn-hangzhou \
-a default
O comando gera o ARN da camada como saída, por exemplo:
395da10bf789aa49dd035db01bab****#myNodeLibLayer#1
Após publicar a camada:
Atualize a configuração da função para referenciar a nova versão da camada.
-
Exclua o diretório local
/nodejse o arquivo compactado:rm -rf nodejs nodejs.zip Implante a função atualizada.
Para mais detalhes sobre criação e referência de camadas, consulte Criar uma camada personalizada e Configurar uma camada personalizada.
PHP
O processo de instalação para PHP segue o mesmo padrão de Python e Node.js. A diferença reside no diretório da camada: o PHP utiliza /opt/php em vez de /python ou /nodejs.
Para consultar a lista completa de diretórios de camada por runtime, acesse a seção "Directories that can be added in each runtime" em Criar uma camada personalizada.
Runtimes personalizados
Caso seu runtime personalizado utilize Python, Node.js ou PHP: Siga as etapas descritas nas seções correspondentes acima.
Se o runtime personalizado usar uma linguagem compilada, como Java ou Go: Utilize o SDK fornecido pelo WebIDE para compilar e empacotar suas dependências.