Hızlı Başlangıç: Komut satırından Azure'da PowerShell işlevi oluşturma

Bu makalede, KOMUT satırı araçlarını kullanarak HTTP isteklerine yanıt veren bir PowerShell işlevi oluşturacaksınız. Kodu yerel olarak test ettikten sonra bunu Azure İşlevleri’nin sunucusuz ortamına dağıtacaksınız.

Bu hızlı başlangıcı tamamladığınızda Azure hesabınıza birkaç sentlik (ABD doları cinsinden) veya daha düşük bir ücret yansıtılır.

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:

Azure Functions Core Tools’u Yükleme

Çekirdek Araçları'nı yüklemenin önerilen yolu, yerel geliştirme bilgisayarınızın işletim sistemine bağlıdır.

Aşağıdaki adımlarda Core Tools v4.x'i yüklemek için bir Windows yükleyicisi (MSI) kullanılır. Diğer paket tabanlı yükleyiciler hakkında daha fazla bilgi için bkz . Çekirdek Araçları benioku.

Windows sürümünüz temelinde Core Tools yükleyicisini indirin ve çalıştırın:

Daha önce Windows'a Core Tools yüklemek için Windows installer (MSI) kullandıysanız, en son sürümü yüklemeden önce Program Ekle Kaldır'dan eski sürümü kaldırmanız gerekir.

Yerel işlev projesi oluşturma

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

  1. Belirtilen çalışma zamanına func init sahip LocalFunctionProj adlı bir klasörde işlev projesi oluşturmak için komutunu 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.json ve host.json adlı 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çerebileceğinden, dosya .gitignore dosyasında varsayılan olarak kaynak denetiminden dışlanır.

  3. Aşağıdaki komutu kullanarak projenize bir işlev ekleyin; burada --name bağımsız değişken işlevinizin benzersiz adıdır (HttpExample) ve --template bağımsız değişken işlevin tetikleyicisini (HTTP) belirtir.

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

    func newprojenin seçilen diline uygun bir kod dosyası ve function.json adlı bir yapılandırma dosyası içeren işlev adıyla eşleşen bir alt klasör oluşturur.

(İsteğe bağlı) Dosya içeriğini inceleme

İsterseniz, İşlevi yerel olarak çalıştır'a atlayabilir ve dosya içeriğini daha sonra inceleyebilirsiniz.

run.ps1

run.ps1, function.json dosyasındaki yapılandırmaya göre tetiklenen bir işlev betiğini 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
})

HTTP tetikleyicisi için işlev, function.json dosyasında tanımlanan parametreye $Request geçirilen istek verilerini alır. function.json dosyasında olarak Response tanımlanan dönüş nesnesi, yanıt olarak cmdlet'e Push-OutputBinding geçirilir.

function.json

function.json , tetikleyici türü de dahil olmak üzere işlevin giriş ve çıkışını bindings 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 tetikleyicisi türünde bir giriş bağlaması ve türünde httpTriggerhttpçıkış bağlaması vardır.

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

  1. LocalFunctionProj klasöründen yerel Azure İşlevleri çalışma zamanı ana bilgisayarını başlatarak işlevinizi çalıştırın.

    func start
    

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

    Screenshot of terminal window output when running function locally.

    Dekont

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

  2. Bu çıkıştan HTTP işlevinizin URL'sini bir tarayıcıya kopyalayın ve sorgu dizesini ?name=<YOUR_NAME>ekleyin ve tam URL'yi gibi yapın http://localhost:7071/api/HttpExample?name=Functions. Tarayıcı, sorgu dizesi değerinizi geri döndüren bir yanıt iletisi görüntülemelidir. Projenizi başlattığınız terminal, istekte bulunurken günlük çıkışını da gösterir.

  3. İşiniz bittiğinde, Ctrl + C tuşlarına basın ve işlevler konasını durdurmak için yazıny.

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

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

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

  1. Henüz yapmadıysanız Azure'da oturum açın:

    az login
    

    az login komutu sizi Azure hesabınızda oturum açar.

  2. Seçtiğiniz bölgede adlı AzureFunctionsQuickstart-rg bir kaynak grubu oluşturun:

    az group create --name AzureFunctionsQuickstart-rg --location <REGION>
    

    az group create komutu bir kaynak grubu oluşturur. Yukarıdaki komutta, az account list-locations komutundan döndürülen kullanılabilir bir bölge kodunu kullanarak değerini yakınınızdaki bir bölgeyle değiştirin<REGION>.

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

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS --allow-blob-public-access false
    

    az storage account create komutu depolama hesabını oluşturur.

    Önceki örnekte değerini size uygun ve Azure Depolama'da benzersiz bir adla değiştirin<STORAGE_NAME>. Adlar yalnızca üç ile 24 karakter arasında sayı ve küçük harf içermelidir. Standard_LRSİşlevler tarafından desteklenen genel amaçlı bir hesap belirtir.

Önemli

Depolama hesabı, bazen uygulama kodunun kendisi de dahil olmak üzere önemli uygulama verilerini depolamak için kullanılır. Diğer uygulama ve kullanıcılardan depolama hesabına erişimi sınırlamanız gerekir.

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

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

    az functionapp create komutu, Azure'da işlev uygulamasını oluşturur.

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

    Bu komut, Azure İşlevleri Tüketim Planı'nın altında belirtilen dil çalışma zamanınızda çalışan bir işlev uygulaması oluşturur ve bu uygulama burada tahakkuk ettiğiniz kullanım miktarı için ücretsizdir. Komut ayrıca aynı kaynak grubundaki ilişkili bir Azure Uygulaması Analizler örneği sağlar. Bu örnekle işlev uygulamanızı izleyebilir ve günlükleri görüntüleyebilirsiniz. Daha fazla bilgi için bkz. İzleme Azure İşlevleri. Örnek, siz etkinleştirene kadar ücret ödemez.

İşlev projesini Azure'a dağıtma

İşlev uygulamanızı Azure'da başarıyla oluşturduktan sonra, artık func azure functionapp publish komutunu kullanarak yerel işlevler projenizi dağıtmaya hazır olursunuz.

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

func azure functionapp publish <APP_NAME>

Yayımla komutu aşağıdaki çıkışa benzer sonuçlar gösterir (kolaylık olması için kesilmiş):

...

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

İşlevi Azure'da çağırma

İşleviniz bir HTTP tetikleyicisi kullandığından, tarayıcıda URL'sine http isteğinde bulunarak veya curl gibi bir araçla çağırabilirsiniz.

Yayımla komutunun çıkışında gösterilen tam Çağırma URL'sini tarayıcı adres çubuğuna kopyalayın ve sorgu parametresini ?name=Functionsekleyin. Tarayıcı, işlevi yerel olarak çalıştırdığınızda olduğu gibi benzer bir çıkış görüntülemelidir.

The output of the function run on Azure in a browser

Gerçek zamanlıya yakın akış günlüklerini gö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. Terminalde Azure'da işlev yürütme işleminin ayrıntılı bir günlüğü gösterilir.

Kaynakları temizleme

Bir sonraki adıma devam edip bir Azure Depolama kuyruğu çıkış bağlaması eklerseniz, daha önce yaptıklarınıza göre derleyeceğiniz gibi tüm kaynaklarınızı yerinde tutun.

Aksi takdirde, daha fazla maliyet oluşmasını önlemek 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