Alıştırma - Çekirdek Araçları kullanarak yerel olarak işlev oluşturma

Tamamlandı

Azure İşlevleri Temel Araçları, aşağıdaki işlemleri yaparak işlevleri kendi bilgisayarınızda yerel olarak geliştirmenizi sağlar:

  • İşlev projesi için gerekli dosya ve klasörleri oluşturma.
  • Projenizin kök dizininden yerel olarak çalışan bir İşlevler konağı sağlama.

Basit bir ilgi alanı hesaplayan bir işlev geliştirerek Azure İşlevleri ile çalışmanıza yerel olarak başlamaya karar verirsiniz. Sonunda birlikte çalışan ve diğer hizmetleri ve veritabanlarını çağıran daha karmaşık işlevler oluşturabilirsiniz. Temel bir kredi hesaplaması gerçekleştiren bir işlev oluşturmak için Temel Araçlar'ı kullanmak iyi bir başlangıçtır. İşlevinizi Azure'da yayımlamadan önce kendi bilgisayarınızda çalıştırmayı da denemek istiyorsunuz. Çekirdek Araçları'nı kullanarak tüm işlemleri Azure Cloud Shell'den yapabilirsiniz.

Azure Cloud Shell Temel Araçlar, Azure CLI ve kod yazmak için kullanabileceğiniz bir düzenleyici ile birlikte gelir. Devam etmeden önce yukarıda Korumalı alanı etkinleştir'i seçtiğinizden emin olun.

Yerel Azure İşlevleri projesi oluşturma

Bu alıştırmada, Core Tools kullanarak ilk JavaScript işlevinizi geliştirmek için Cloud Shell'i kullanın. Cloud Shell'de hem Core Tools'un hem de Node.js doğru sürümleri zaten yüklüdür.

  1. Kök klasörden komutunu çalıştırarak func init yeni loan-wizard bir klasörde işlev projesi oluşturun.

    func init loan-wizard
    
  2. Çalışan çalışma zamanı seçmeniz istendiğinde düğüm için 3 girin.

  3. Dil seçmeniz istendiğinde javascript için 1 girin.

    Çıktıda diske yazılan dosyalar listelenir ve bunlar şu dosyalardır:

    • host.json hem çalışma zamanı örneği hem de belirli tetikleyici ve bağlama türleri için uygulama düzeyinde yapılandırmayı destekler.
    • local.settings.json yalnızca yerel davranışları ve uygulama ayarlarını (yerel ortam değişkenleri) ayarlar.
    • package.json, yükleyip kodunuzda kullandığınız tüm paketleri izleyen, JavaScript’e özel bir dosyadır.
    • .gitignore ve extensions.json , sırasıyla Git sürüm denetim aracı ve Visual Studio Code tarafından kullanılan yapılandırma dosyalarıdır. Şimdilik bunları yoksayabilirsiniz.

HTTP ile tetiklenen işlev oluşturma

İşlevinizi oluşturmanın zamanı geldi!

  1. Cloud Shell'de yeni loan-wizard dizine gidin.

    cd ~/loan-wizard
    
  2. İşlev oluşturma sihirbazını başlatmak için komutunu çalıştırın func new .

    func new
    
  3. Şablon seçmeniz istendiğinde HTTP tetikleyicisi için 7 girin.

  4. HTTP tetikleyicisi için bir işlev adı sağlamanız istendiğinde girin simple-interest.

  5. Cloud Shell düzenleyicisini açmak için aşağıdaki komutu çalıştırın.

    code .
    

    Screenshot showing the simple-interest folder with the function.json file open in Cloud Shell code editor.

    Sihirbaz, işlevler projesinde src/functions altında varsayılan şablon içeriğine sahip olan simple-interest.js adlı yeni bir dosya oluşturur. Bu kod, Azure İşlevleri için Node.js v4 programlama modelini destekler. Düzenleyiciyi kullanarak proje dosyalarını keşfetmek için bir dakikanızı ayırın. Ekran görüntüsü, düzenleyicide simple-interest.js açık olan genişletilmiş klasörü gösterir.

simple-interest işlevini uygulama

Core Tools'un simple-interest.js bizim için oluşturduğu varsayılan işlev uygulaması, sorgu dizesinde veya gelen HTTP isteğinin gövdesinde adlı name bir girişi arar ve dizesini Hello, [name]döndürür. HTTP tetikleyicisinin nasıl kullanılacağını gösteren iyi bir çizimdir, ancak bu kodu üç giriş parametresinden basit ilgiyi hesaplayan kodla değiştirmek istiyorsunuz.

  1. Düzenleyicinin DOSYALAR bölmesinde src>işlevleri klasörünü genişletin ve simple-interest.js seçerek dosyayı düzenleyicide açın.

  2. simple-interest.js içeriğinin tamamını aşağıdaki kodla değiştirin:

    const { app } = require('@azure/functions');
    
    app.http('simple-interest', {
        methods: ['GET','POST'],
        authLevel: 'anonymous',
        handler: async (request, context) => {
            const principal = parseFloat(request.query.get('principal'));
            const rate = parseFloat(request.query.get('rate'));
            const term = parseFloat(request.query.get('term'));
    
          if ([principal, rate, term].some(isNaN)) {
            // If any empty or non-numeric values, return a 400 response with an
            // error message
            return {
              status: 400,
              body: "Please supply principal, rate and term in the query string"
            };
          } else {
            // Otherwise set the response body to the product of the three values
            return { body: principal * rate * term };
          }
        }
    });
    

    Bu betik, HTTP isteğinin sorgu dizesinde , rateve term adlı principalparametreleri arar. Daha sonra basit faiz hesaplamasının (principal * rate * term) sonucunu döndürür.

  3. Ctrl S tuşlarına basarak dosyayı kaydedin ve Ctrl++Q tuşuna basarak düzenleyiciyi kapatın.

Cloud Shell'de işlevi çalıştırma

Yeni işlevinizi denemek üzere yerel olarak çalıştırmak için komutunu kullanarak func start İşlevler çalışma zamanını (func.exe) bir arka plan işleminde başlatın; böylece komut satırı çalışırken kullanabilirsiniz. Ardından, işleviyle etkileşime geçmek için bir komut satırı aracı curlkullanın.

Çekirdek Araçları'nı kendi bilgisayarınızdan kullanıyorsanız, ikinci bir terminal penceresinden veya web tarayıcısından kullanabilirsiniz curl . Core Tools tarafından üretilen çıkış, ilk terminal penceresinde gerçek zamanlı olarak görünür. Cloud Shell'de tek bir terminalle sınırlı olduğunuzdan Temel Araçlar'ı (func.exe) arka plan işleminde çalıştırmanız gerekir.

  1. İşlevler konağını arka planda sessizce başlatmak için aşağıdaki komutu çalıştırın.

    func start &> ~/output.txt &
    

    gibi func newCloud Shell de dizininde loan-wizard olmalıdır.

    İşlevler konağı şimdi çıktısını ~/output.txt dosyasına yazıyor. Komut satırı çalışırken kullanmaya devam edebilirsiniz.

    İşlemin ps çalıştığını doğrulamak func için komutunu kullanın.

  2. Çıkış günlüğünü görüntülemek için aşağıdaki komutu girin.

    code ~/output.txt
    

    Çıktıda, hem GET hem de POST HTTP isteği http://localhost:7071/api/simple-interestolarak listelendiğini Functions: simple-interest: belirten bir ileti görürsünüz.

    Not

    Bir hata iletisi görürseniz konağı durdurmak için Ctrl+C'yi seçin. Kod dosyanızın içeriğinin örnekle aynı olduğundan emin olun.

    Bu localhost URL'si web'de yayımlanmaz, yalnızca Cloud Shell oturumunuzda çalışan araçlardan erişilebilir.

  3. Ctrl+Q'yi seçerek düzenleyiciyi kapatın.

  4. Yerel olarak çalışan işlevinize HTTP GET isteği göndermek için aşağıdaki komutu çalıştırın.

    curl "http://localhost:7071/api/simple-interest" -w "\n"
    

    çıktısı, Please supply principal, rate and term in the query stringişlevimizin başarıyla çağrıldığı ve yanıt döndürebildiğini ancak istediğiniz gibi çağırılmadığını gösterir. PARAMETRELERI HTTP isteğinin bir parçası olarak sağlamanız gerekir.

  5. İşlevi yeniden çağırın. Bu kez, sorgu dizesi parametrelerinin her biri için bir değer sağlayın.

    curl "http://localhost:7071/api/simple-interest?principal=5000&rate=.035&term=36" -w "\n"
    

    Bu kez çıkış olur 6300. İşleviniz beklendiği gibi çalışıyor!

  6. Çıkış günlüğünü yeniden görüntülemek için aşağıdaki komutu girin.

    code ~/output.txt
    

    Başlangıç günlüğü girdilerinden sonra, işlevini ile curlher çağırdığınızda için zaman damgası eklenmiş bir günlük girdisi kümesi eklendiğini görürsünüz:

    [2024-02-20T06:25:56.700Z] Executing 'Functions.simple-interest' (Reason='This function was programmatically called via the host APIs.', Id=5daf20c3-f204-41bb-a5b9-021acaf17c04)
    [2024-02-20T06:25:56.893Z] Executed 'Functions.simple-interest' (Succeeded, Id=5daf20c3-f204-41bb-a5b9-021acaf17c04, Duration=228ms)
    
    
  7. Ctrl+Q'yi seçerek düzenleyiciyi kapatın.