WebIDE, Function Compute yürütme ortamıyla aynı ortamda çalışır; bu nedenle WebIDE terminaline yüklediğiniz paketler çalışma zamanında aynı şekilde davranır. Bu konuda Python, Node.js, PHP ve özel çalışma zamanları için üçüncü taraf bağımlılıklarının nasıl yükleneceği ve paketleneceği açıklanmaktadır.
Yükleme yaklaşımı seçin
Her çalışma zamanı için bağımlılıkları aşağıdaki iki yaklaşımdan birini kullanarak yükleyebilirsiniz:
| Yaklaşım | Ne zaman kullanılır | Dizin |
|---|---|---|
| Kod dizinine doğrudan yükleme | Küçük bağımlılıklar, sık dağıtımlar | /code |
| Bağımlılıkları katman olarak paketleme | Büyük bağımlılıklar, nadiren değişen yapılar | Çalışma zamanına özgü (aşağıdaki bölümlere bakın) |
Büyük bağımlılık kümeleri soğuk başlatma gecikme süresini, işlev kodu paketi boyutunu ve dağıtım süresini artırır. Bunları katman olarak paketlemek, bağımlılık yaşam döngüsünü işlev kodunuzdan ayırır; böylece her dağıtımda değil, yalnızca bağımlılıklar değiştiğinde katmanı güncellersiniz.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Function Compute içinde oluşturulmuş ve çalışan bir WebIDE örneğine sahip bir işlev
WebIDE terminaline erişim
Python
Python çalışma zamanları, bir dizi yerleşik Python modülü içerir. Bu listede yer almayan herhangi bir modül için WebIDE terminalinden yükleyin.
/code dizinine doğrudan yükleme
WebIDE terminalindeki /code dizininde aşağıdaki komutu çalıştırın:
pip install -t . flask
# Or, using a requirements file:
pip install -t . -r requirements.txt
Paketleri doğrudan /code dizinine yüklemek, bunları işlev kodunuzun yanına yerleştirir. Çok sayıda paket yüklendiğinde, dizin paket dosyaları ve klasörleriyle dolduğundan kaynak yöneticisinde index.py dosyasını bulmak zorlaşabilir. Bu durum sizin için sorun teşkil ediyorsa, bunun yerine ayrı bir dizine yükleyin.
Ayrı bir dizine yükleme
Kod dizininizi temiz tutmak için paketleri /python alt dizinine yükleyin ve çalışma zamanının bunları bulabilmesi için bir ortam değişkeni ayarlayın:
mkdir python
cd python
pip install -t . flask
İşlev yapılandırmanıza PYTHONPATH=/code/python ortam değişkenini ekleyin.
Katman olarak paketleme
Bağımlılık kümesi büyükse, /python dizinini bir katman olarak paketleyin. Bu işlem, işlev kodu paketi boyutunu azaltır ve sonraki dağıtımları hızlandırır.
Katman dizini olarak/pythonkullandığınızda, Function Compute bu dizini Python arama yoluna otomatik olarak ekler.PYTHONPATH=/opt/pythonayarlamanıza gerek yoktur.
Aşağıdaki komutları sırayla çalıştırın:
# 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
Komut, katman ARN'sini aşağıdaki gibi çıktılar:
395da10bf789aa49dd035db01bab****#myPythonLibLayer#1
Katman yayınlandıktan sonra:
Yeni katman sürümüne referans vermek için işlev yapılandırmanızı güncelleyin.
-
İşlev kodu paketi boyutunu küçültmek için yerel
/pythondizinini ve arşivi silin:rm -rf python python.zip Güncellenmiş işlevi dağıtın.
Katman oluşturma ve referans verme talimatları için bkz. Özel katman oluşturma ve Özel katman yapılandırma.
Node.js
Node.js çalışma zamanları, bir dizi yerleşik Node.js modülü içerir. Bu listede yer almayan herhangi bir modül için WebIDE terminalinden yükleyin.
/code dizinine doğrudan yükleme
package.json dosyasının /code dizininde bulunduğundan emin olun ve ardından aşağıdaki komutu çalıştırın:
npm install
Katman olarak paketleme
Bağımlılık kümesi büyükse, node_modules dizinini /nodejs dizinine taşıyın ve bir katman olarak paketleyin:
# 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
Komut, katman ARN'sini aşağıdaki gibi çıktılar:
395da10bf789aa49dd035db01bab****#myNodeLibLayer#1
Katman yayınlandıktan sonra:
Yeni katman sürümüne referans vermek için işlev yapılandırmanızı güncelleyin.
-
Yerel
/nodejsdizinini ve arşivi silin:rm -rf nodejs nodejs.zip Güncellenmiş işlevi dağıtın.
Katman oluşturma ve referans verme talimatları için bkz. Özel katman oluşturma ve Özel katman yapılandırma.
PHP
PHP için yükleme süreci Python ve Node.js ile aynı deseni takip eder. Fark, katman dizinindedir: PHP, /python veya /nodejs yerine /opt/php kullanır.
Çalışma zamanına göre katman dizinlerinin tam listesi için bkz. Özel katman oluşturma konusundaki "Her çalışma zamanında eklenebilen dizinler" bölümü.
Özel çalışma zamanları
Özel çalışma zamanınız Python, Node.js veya PHP kullanıyorsa: Yukarıdaki ilgili bölümlerdeki adımları izleyin.
Özel çalışma zamanınız Java veya Go gibi derlenen bir dil kullanıyorsa: Bağımlılıklarınızı derlemek ve paketlemek için WebIDE tarafından sağlanan SDK'yı kullanın.