Hızlı başlangıç: Azure 'da komut satırından bir PowerShell işlevi oluşturma

Bu makalede, HTTP isteklerine yanıt veren bir PowerShell işlevi oluşturmak için komut satırı araçlarını kullanırsınız. Kodu yerel olarak test ettikten sonra, Azure Işlevlerinin sunucusuz ortamına dağıtırsınız.

Bu hızlı başlangıcı tamamlamak, Azure hesabınızda birkaç ABD Doları veya daha kısa bir ücret doğurur.

Bu makalenin Visual Studio Code tabanlı bir sürümü de vardır.

Yerel ortamınızı yapılandırma

Başlamadan önce aşağıdakilere sahip olmanız gerekir:

Önkoşul denetimi

Azure CLı veya Azure kaynakları oluşturmak için Azure PowerShell kullanıp kullanmayacağınızı temel alan önkoşulları doğrulayın:

  • Bir Terminal veya komut penceresinde, func --version Azure Functions Core Tools sürüm 3. x olduğunu denetlemek için komutunu çalıştırın.

  • az --versionAzure CLI sürümünün 2,4 veya üzeri olduğunu denetlemek için ' i çalıştırın.

  • az loginAzure 'da oturum açmak ve etkin bir aboneliği doğrulamak için ' i çalıştırın.

Yerel işlev projesi oluşturma

Azure Işlevlerinde bir işlev projesi, her birinin belirli bir tetikleyiciye yanıt verdiği bir veya daha fazla bağımsız işlev için bir kapsayıcıdır. Projedeki tüm işlevler aynı yerel ve barındırma yapılandırmalarına sahiptir. Bu bölümde, tek bir işlev içeren bir işlev projesi oluşturursunuz.

  1. func initBelirtilen çalışma zamanına sahip Localfunctionproj adlı klasörde bir işlevler projesi oluşturmak için komutu aşağıdaki gibi çalıştırın:

    func init LocalFunctionProj --powershell
    
  2. Proje klasörüne gidin:

    cd LocalFunctionProj
    

    Bu klasör, local.settings.js ve host.jsadlı yapılandırma dosyaları da dahil olmak üzere, proje için çeşitli dosyalar içerir. local.settings.json , Azure 'dan indirilen gizli dizileri içerebildiğinden, dosya, . gitignore dosyasında varsayılan olarak kaynak denetiminden çıkarılır.

  3. Aşağıdaki komutu kullanarak, --name bağımsız değişkenin işlevinizin (HttpExample) benzersiz adı olduğu ve --template bağımsız değişkeninin işlevin TETIKLEYICISINI (http) belirttiği, projenize bir işlev ekleyin.

    func new --name HttpExample --template "HTTP trigger" --authlevel "anonymous"
    

    func new Projenin seçtiği dile uygun bir kod dosyası ve üzerindefunction.js adlı bir yapılandırma dosyası içeren işlev adıyla eşleşen bir alt klasör oluşturur.

Seçim Dosya içeriğini inceleyin

İsterseniz, işlevi yerel olarak çalıştırmayı atlayıp dosya içeriğini daha sonra incelemenizi sağlayabilirsiniz.

run.ps1

run.ps1 , function.jsüzerindeki yapılandırmaya göre tetiklenen bir işlev betiği tanımlar.

using namespace System.Net

# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)

# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."

# Interact with query parameters or the body of the request.
$name = $Request.Query.Name
if (-not $name) {
    $name = $Request.Body.Name
}

$body = "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."

if ($name) {
    $body = "Hello, $name. This HTTP triggered function executed successfully."
}

# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
    StatusCode = [HttpStatusCode]::OK
    Body = $body
})

Bir HTTP tetikleyicisi için işlev, $Request function.jsüzerinde tanımlanan param öğesine geçirilen istek verilerini alır. function.jsüzerinde olduğu gibi tanımlanan dönüş nesnesi, Response Push-OutputBinding cmdlet 'e yanıt olarak geçirilir.

function.json

function.js , bindings tetikleyici türü de dahil olmak üzere işlevin giriş ve çıkışını tanımlayan bir yapılandırma dosyasıdır.

{
  "bindings": [
    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    }
  ]
}

Her bağlama bir yön, tür ve benzersiz bir ad gerektirir. HTTP tetikleyicisinin tür ve çıkış bağlaması türünde bir giriş bağlaması vardır httpTrigger http .

İşlevi yerel olarak çalıştırma

  1. Yerel Azure Işlevleri çalışma zamanı konağını Localfunctionproj klasöründen başlatarak işlevinizi çalıştırın:

    func start
    

    Çıktının sonuna doğru, aşağıdaki satırlar görünmelidir:

     ...
    
     Now listening on: http://0.0.0.0:7071
     Application started. Press Ctrl+C to shut down.
    
     Http Functions:
    
             HttpExample: [GET,POST] http://localhost:7071/api/HttpExample
     ...
    
     

    Not

    HttpExample yukarıda gösterildiği gibi görünmezse, büyük olasılıkla ana bilgisayarı projenin kök klasörü dışından başlatmış olursunuz. Bu durumda, + Konağı durdurmak için CTRL C 'yi kullanın, projenin kök klasörüne gidin ve önceki komutu yeniden çalıştırın.

  2. HttpExampleİşlevinizin URL 'sini bu çıktıdan tarayıcıya kopyalayın ve sorgu dizesini ekleyerek ?name=<YOUR_NAME> tam URL 'yi yapın http://localhost:7071/api/HttpExample?name=Functions . Tarayıcı, sorgu dizesi değerini yankılayan bir yanıt iletisi görüntülemelidir. Projenizi başlattığınız Terminal Ayrıca, istek yaptığınız sürece günlük çıktısını gösterir.

  3. İşiniz bittiğinde CTRL + C ' yi kullanın ve y işlevler ana bilgisayarını durdurmayı seçin.

İşleviniz için destekleyici Azure kaynakları oluşturma

İşlev kodunuzu Azure 'a dağıtabilmeniz için önce üç kaynak oluşturmanız gerekir:

  • İlgili kaynaklar için mantıksal kapsayıcı olan bir kaynak grubu.
  • İşlevleriniz hakkında durum ve diğer bilgileri korumak için kullanılan bir depolama hesabı.
  • İşlev kodunuzu yürütmek için ortam sağlayan bir işlev uygulaması. Bir işlev uygulaması yerel işlev projenize eşlenir ve kaynakların daha kolay yönetilmesi, dağıtılması ve paylaşılması için işlevleri bir mantıksal birim olarak gruplandırmanızı sağlar.

Bu öğeleri oluşturmak için aşağıdaki komutları kullanın. Hem Azure CLı hem de PowerShell desteklenir.

  1. Şimdiye kadar yapmadıysanız Azure 'da oturum açın:

    az login
    

    Az Login komutu sizi Azure hesabınızda oturum açar.

  2. Bölgede adlı bir kaynak grubu oluşturun AzureFunctionsQuickstart-rg westeurope :

    az group create --name AzureFunctionsQuickstart-rg --location westeurope
    

    Az Group Create komutu bir kaynak grubu oluşturur. Genellikle kaynak grubunuzu ve kaynaklarınızı, komuttan döndürülen kullanılabilir bir bölgeyi kullanarak size yakın bir bölgede oluşturursunuz az account list-locations .

  3. Kaynak grubunuzda ve bölgenizde genel amaçlı bir depolama hesabı oluşturun:

    az storage account create --name <STORAGE_NAME> --location westeurope --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS
    

    Az Storage Account Create komutu depolama hesabı oluşturur.

    Önceki örnekte, <STORAGE_NAME> Azure depolama 'da size uygun ve benzersiz olan bir adla değiştirin. Adlar yalnızca üç ile 24 karakter arasında ve küçük harflerden oluşmalıdır. Standard_LRSişlevleri tarafından desteklenen, genel amaçlı bir hesabı belirtir.

  1. Azure 'da işlev uygulaması oluşturma:

    az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location westeurope --runtime powershell --functions-version 3 --name <APP_NAME> --storage-account <STORAGE_NAME>
    

    Az functionapp Create komutu, Azure 'da işlev uygulaması oluşturur.

    Önceki örnekte, değerini, <STORAGE_NAME> önceki adımda kullandığınız hesabın adıyla değiştirin ve öğesini <APP_NAME> sizin için uygun olan bir genel benzersiz adla değiştirin. <APP_NAME> aynı zamanda işlev uygulamasının varsayılan DNS etki alanıdır.

    Bu komut, burada yaptığınız kullanım miktarı için ücretsiz olan Azure Işlevleri tüketim planıaltında, belirtilen dil çalışma zamanında çalışan bir işlev uygulaması oluşturur. Bu komut Ayrıca, aynı kaynak grubunda, işlev uygulamanızı izleyebilmeniz ve günlükleri görüntüleyebileceğiniz ilişkili bir Azure Application Insights örneğini sağlar. Daha fazla bilgi için bkz. Azure Işlevlerini izleme. Örnek, siz etkinleştirene kadar hiçbir maliyet vermez.

İşlev projesini Azure 'a dağıtma

İşlev uygulamanızı Azure 'da başarıyla oluşturduktan sonra, Func Azure functionapp Publish komutunu kullanarak yerel işlevler projenizi dağıtmaya hazırsınız demektir.

Aşağıdaki örnekte, değerini <APP_NAME> uygulamanızın adıyla değiştirin.

func azure functionapp publish <APP_NAME>

Yayımla komutu aşağıdaki çıktıya benzer sonuçları gösterir (basitlik için kesildi):

...

Getting site publishing info...
Creating archive for current directory...
Performing remote build for functions project.

...

Deployment successful.
Remote build succeeded!
Syncing triggers...
Functions in msdocs-azurefunctions-qs:
    HttpExample - [httpTrigger]
        Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample

Azure 'da işlevi çağırma

İşleviniz bir HTTP tetikleyicisi kullandığından, tarayıcıda URL 'sine veya kıvrıcı gibi bir araçla HTTP isteği yaparak bu uygulamayı çağırabilirsiniz.

Yayımla komutunun çıktısında gösterilen tüm ÇAĞıRMA URL 'sini, sorgu parametresini ekleyerek bir tarayıcı adres çubuğuna kopyalayın &name=Functions . , İşlevi yerel olarak çalıştırdığınızda tarayıcı benzer bir çıktı görüntülemelidir.

Azure üzerinde çalışan işlevin çıktısı bir tarayıcıda

Neredeyse gerçek zamanlı akış günlüklerinigörüntülemek için aşağıdaki komutu çalıştırın:

func azure functionapp logstream <APP_NAME> 

Ayrı bir Terminal penceresinde veya tarayıcıda, uzak işlevi yeniden çağırın. Azure 'da işlev yürütmenin ayrıntılı günlüğü terminalde gösterilir.

Kaynakları temizleme

Bir sonraki adımla devam ederseniz ve bir Azure depolama kuyruğu çıktı bağlaması eklerseniz, daha önce yapmış olduğunuz yerde oluşturacağınız sürece tüm kaynaklarınızı saklayın.

Aksi takdirde, daha fazla maliyet ödemeden kaçınmak için kaynak grubunu ve içerdiği tüm kaynakları silmek için aşağıdaki komutu kullanın.

az group delete --name AzureFunctionsQuickstart-rg

Sonraki adımlar