azure işlevlerini komut satırı araçlarını kullanarak azure Depolama Bağlan

bu makalede, bir Azure Depolama kuyruğunu önceki hızlı başlangıç makalesinde oluşturduğunuz işlev ve depolama hesabıyla tümleştirin. Bu tümleştirmeyi, HTTP isteğinden kuyruktaki bir iletiye veri yazan bir Çıkış bağlaması kullanarak elde edersiniz. Bu makalenin tamamlanması, önceki hızlı başlangıç için birkaç USD 'nin ötesinde ek maliyet yoktur. Bağlamalar hakkında daha fazla bilgi edinmek için bkz. Azure işlevleri Tetikleyicileri ve bağlamaları kavramları.

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

Başlamadan önce, komut satırından hızlı başlangıç: Azure işlevleri projesi oluşturmamakalesini doldurmanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediğinizde, işlev uygulamasını ve ilgili kaynakları Azure 'da yeniden oluşturmak için adımlara tekrar gidin.

Başlamadan önce, komut satırından hızlı başlangıç: Azure işlevleri projesi oluşturmamakalesini doldurmanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediğinizde, işlev uygulamasını ve ilgili kaynakları Azure 'da yeniden oluşturmak için adımlara tekrar gidin.

Başlamadan önce, komut satırından hızlı başlangıç: Azure işlevleri projesi oluşturmamakalesini doldurmanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediğinizde, işlev uygulamasını ve ilgili kaynakları Azure 'da yeniden oluşturmak için adımlara tekrar gidin.

Başlamadan önce, komut satırından hızlı başlangıç: Azure işlevleri projesi oluşturmamakalesini doldurmanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediğinizde, işlev uygulamasını ve ilgili kaynakları Azure 'da yeniden oluşturmak için adımlara tekrar gidin.

Başlamadan önce, komut satırından hızlı başlangıç: Azure işlevleri projesi oluşturmamakalesini doldurmanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediğinizde, işlev uygulamasını ve ilgili kaynakları Azure 'da yeniden oluşturmak için adımlara tekrar gidin.

Başlamadan önce, komut satırından hızlı başlangıç: Azure işlevleri projesi oluşturmamakalesini doldurmanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediğinizde, işlev uygulamasını ve ilgili kaynakları Azure 'da yeniden oluşturmak için adımlara tekrar gidin.

Azure Depolama dizesini alma

Daha önce, işlev uygulaması Depolama bir Azure depolama hesabı oluşturdunız. Bu hesabın bağlantı dizesi Azure'daki uygulama ayarlarında güvenli bir şekilde depolanır. Bu ayarı dosyadalocal.settings.js indirerek, işlevi yerel olarak çalıştırarak aynı hesapta yer alan bir Depolama bu bağlantı yazma işlevini kullanabilirsiniz.

  1. Projenin kökünden aşağıdaki komutu çalıştırın ve yerine önceki hızlı <APP_NAME> başlangıçtaki işlev uygulamanın adını yazın. Bu komut, dosyadaki mevcut değerlerin üzerine yazacak.

    func azure functionapp fetch-app-settings <APP_NAME>
    
  2. Hesabı local.settings.jsaçın ve hesap bağlantı dizesi olan adlı Depolama değerini AzureWebJobsStorage bulun. Bu makalenin AzureWebJobsStorage diğer bölümlerinde adı ve bağlantı dizesini kullanırsiniz.

Önemli

üzerinde local.settings.jsAzure'dan indirilen gizli diziler içerdiğinden, bu dosyayı her zaman kaynak denetiminden hariç tutabilirsiniz. Yerel işlevler projesiyle oluşturulan .gitignore dosyası varsayılan olarak dosyayı dışlar.

Bağlama uzantılarını kaydetme

HTTP ve zamanlayıcı tetikleyicileri dışında bağlamalar uzantı paketleri olarak uygulanır. Terminal penceresinde aşağıdaki dotnet add package komutunu çalıştırarak projenize Depolama paketi ekleyin.

dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage 

Şimdi depolama çıkış bağlamasını projenize eklemek için kullanabilirsiniz.

İşleve çıkış bağlama tanımı ekleme

Bir işlev yalnızca bir tetikleyicisine sahip olsa da, özel tümleştirme kodu yazmadan diğer Azure hizmetlerine ve kaynaklarına bağlanmanızı sağlayan birden çok giriş ve çıkış bağlaması olabilir.

Bu bağlamaları, işlev klasörünüzdeki dosyasında function.js bildirirsiniz. Önceki hızlı başlangıçta, Httpexample klasöründeki dosya function.js koleksiyonda iki bağlama içerir bindings :

"bindings": [
    {
        "authLevel": "function",
        "type": "httpTrigger",
        "direction": "in",
        "name": "req",
        "methods": [
            "get",
            "post"
        ]
    },
    {
        "type": "http",
        "direction": "out",
        "name": "res"
    }
]
"scriptFile": "__init__.py",
"bindings": [
    {
        "authLevel": "function",
        "type": "httpTrigger",
        "direction": "in",
        "name": "req",
        "methods": [
            "get",
            "post"
        ]
    },
    {
        "type": "http",
        "direction": "out",
        "name": "$return"
    }
"bindings": [
  {
    "authLevel": "function",
    "type": "httpTrigger",
    "direction": "in",
    "name": "Request",
    "methods": [
      "get",
      "post"
    ]
  },
  {
    "type": "http",
    "direction": "out",
    "name": "Response"
  }
]

Her bağlamanın en az bir türü, yönü ve adı vardır. Yukarıdaki örnekte, ilk bağlama httpTrigger yönden bir tür in . Yönü için in , name Tetikleyici tarafından çağrıldığında işleve gönderilen giriş parametresinin adını belirtir.

Koleksiyondaki ikinci bağlamanın adı res . Bu http bağlama, out HTTP yanıtını yazmak için kullanılan bir çıkış bağlamadır ().

Bu işlevden bir Azure depolama kuyruğuna yazmak için out queue msg aşağıdaki kodda gösterildiği gibi adıyla bir tür bağlama ekleyin:

    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "msg",
      "queueName": "outqueue",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

Koleksiyondaki ikinci bağlama http yöndür ve out Bu durumda özel, name $return Bu bağlamanın bir giriş parametresi sağlamak yerine işlevin dönüş değerini kullandığını gösterir.

Bu işlevden bir Azure depolama kuyruğuna yazmak için out queue msg aşağıdaki kodda gösterildiği gibi adıyla bir tür bağlama ekleyin:

"bindings": [
  {
    "authLevel": "anonymous",
    "type": "httpTrigger",
    "direction": "in",
    "name": "req",
    "methods": [
      "get",
      "post"
    ]
  },
  {
    "type": "http",
    "direction": "out",
    "name": "$return"
  },
  {
    "type": "queue",
    "direction": "out",
    "name": "msg",
    "queueName": "outqueue",
    "connection": "AzureWebJobsStorage"
  }
]

Koleksiyondaki ikinci bağlamanın adı res . Bu http bağlama, out HTTP yanıtını yazmak için kullanılan bir çıkış bağlamadır ().

Bu işlevden bir Azure depolama kuyruğuna yazmak için out queue msg aşağıdaki kodda gösterildiği gibi adıyla bir tür bağlama ekleyin:

    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "msg",
      "queueName": "outqueue",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

Bu durumda, msg işlevine çıkış bağımsız değişkeni olarak verilir. Bir queue tür için, içindeki kuyruğun adını da belirtmeniz queueName ve Içindeki Azure depolama bağlantısının ( local.settings.json) adını sağlamanız gerekir connection .

Bir C# projesinde, bağlamalar işlev yönteminde bağlama öznitelikleri olarak tanımlanır. Belirli tanımlar, uygulamanızın işlem içinde (C# sınıf kitaplığı) veya yalıtılmış bir işlemde çalışmasına bağlıdır.

Httpexample. cs proje dosyasını açın ve Yöntem tanımına aşağıdaki parametreyi ekleyin Run :

[Queue("outqueue"),StorageAccount("AzureWebJobsStorage")] ICollector<string> msg,

msgParametresi ICollector<T> , işlev tamamlandığında çıkış bağlamaya yazılan bir ileti koleksiyonunu temsil eden bir türdür. Bu durumda, çıktı adlı bir depolama kuyruğudur outqueue . Depolama hesabının bağlantı dizesi tarafından ayarlanır StorageAccountAttribute . bu öznitelik, Depolama hesabı bağlantı dizesini içeren ve sınıf, yöntem veya parametre düzeyinde uygulanabilen ayarı gösterir. Bu durumda, StorageAccountAttribute zaten varsayılan depolama hesabını kullandığınızdan atlayabilirsiniz.

Çalıştırma yöntemi tanımı artık aşağıdaki gibi görünmelidir:

[FunctionName("HttpExample")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, 
    [Queue("outqueue"),StorageAccount("AzureWebJobsStorage")] ICollector<string> msg, 
    ILogger log)

Java projesinde bağlamalar, işlev yönteminde bağlama ek açıklamaları olarak tanımlanır. Dosyadaki function.js bu ek açıklamaları temel alınarak otomatik olarak oluşturulur.

Src/Main/Java altındaki işlev kodunuzun konumuna gidin, function. Java proje dosyasını açın ve Yöntem tanımına aşağıdaki parametreyi ekleyin run :

@QueueOutput(name = "msg", queueName = "outqueue", connection = "AzureWebJobsStorage") OutputBinding<String> msg

msgParametresi OutputBinding<T> , işlev tamamlandığında çıkış bağlamaya ileti olarak yazılmış dizeler koleksiyonunu temsil eden bir türdür. Bu durumda, çıktı adlı bir depolama kuyruğudur outqueue . Depolama hesabı için bağlantı dizesi yöntemi tarafından ayarlanır connection . Bağlantı dizesinin kendisi yerine, depolama hesabı bağlantı dizesini içeren uygulama ayarını geçirirsiniz.

runYöntem tanımı şimdi aşağıdaki örnekteki gibi görünmelidir:

@FunctionName("HttpTrigger-Java")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.FUNCTION)  
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", connection = "AzureWebJobsStorage") 
        OutputBinding<String> msg, final ExecutionContext context) {
    ...
}

Bağlamaların ayrıntıları hakkında daha fazla bilgi için bkz. Azure işlevleri Tetikleyicileri ve bağlamaları kavramları ve sıra çıkış yapılandırması.

Çıkış bağlamayı kullanmak için kod ekleme

Sıra bağlaması tanımlı ile, artık işlevinizi, msg Çıkış parametresini alacak ve kuyruğa ileti yazacak şekilde güncelleştirebilirsiniz.

HttpExample \ _ _ init _ _ .py'yi aşağıdaki kodla eşecek şekilde güncelleştirin, msg parametresini işlev tanımına ve msg.set(name) deyiminin altına if name: ekler.

import logging

import azure.functions as func


def main(req: func.HttpRequest, msg: func.Out[func.QueueMessage]) -> str:

    name = req.params.get('name')
    if not name:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            name = req_body.get('name')

    if name:
        msg.set(name)
        return func.HttpResponse(f"Hello {name}!")
    else:
        return func.HttpResponse(
            "Please pass a name on the query string or in the request body",
            status_code=400
        )

msgparametresi bir azure.functions.Out class örneğidir. yöntemi set kuyruğa bir dize iletisi yazar, bu durumda URL sorgu dizesinde işleve geçirilen ad.

msgKuyruk iletisi oluşturmak için çıkış bağlama nesnesi kullanan kodu ekleyin context.bindings . Bu kodu context.res deyimden önce ekleyin.

// Add a message to the Storage queue,
// which is the name passed to the function.
context.bindings.msg = (req.query.name || req.body.name);

Bu noktada, işleviniz aşağıdaki gibi görünmelidir:

module.exports = async function (context, req) {
    context.log('JavaScript HTTP trigger function processed a request.');

    if (req.query.name || (req.body && req.body.name)) {
        // Add a message to the Storage queue,
        // which is the name passed to the function.
        context.bindings.msg = (req.query.name || req.body.name);
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: "Hello " + (req.query.name || req.body.name)
        };
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request body"
        };
    }
};

msgKuyruk iletisi oluşturmak için çıkış bağlama nesnesi kullanan kodu ekleyin context.bindings . Bu kodu context.res deyimden önce ekleyin.

context.bindings.msg = name;

Bu noktada, işleviniz aşağıdaki gibi görünmelidir:

import { AzureFunction, Context, HttpRequest } from "@azure/functions"

const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> {
    context.log('HTTP trigger function processed a request.');
    const name = (req.query.name || (req.body && req.body.name));

    if (name) {
        // Add a message to the storage queue, 
        // which is the name passed to the function.
        context.bindings.msg = name; 
        // Send a "hello" response.
        context.res = {
            // status: 200, /* Defaults to 200 */
            body: "Hello " + (req.query.name || req.body.name)
        };
    }
    else {
        context.res = {
            status: 400,
            body: "Please pass a name on the query string or in the request body"
        };
    }
};

export default httpTrigger;

Push-OutputBindingÇıkış bağlamayı kullanarak bir metni kuyruğa yazmak için cmdlet 'ini kullanan kodu ekleyin msg . Deyimdeki Tamam durumunu ayarlamadan önce bu kodu ekleyin if .

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

Bu noktada, işleviniz aşağıdaki gibi görünmelidir:

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
}

if ($name) {
    # Write the $name value to the queue, 
    # which is the name passed to the function.
    $outputMsg = $name
    Push-OutputBinding -name msg -Value $outputMsg

    $status = [HttpStatusCode]::OK
    $body = "Hello $name"
}
else {
    $status = [HttpStatusCode]::BadRequest
    $body = "Please pass a name on the query string or in the request body."
}

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

msgBir kuyruk iletisi oluşturmak için çıkış bağlama nesnesini kullanan kodu ekleyin. Metodun döndürüldüğünden önce bu kodu ekleyin.

if (!string.IsNullOrEmpty(name))
{
    // Add a message to the output collection.
    msg.Add(string.Format("Name passed to the function: {0}", name));
}

Bu noktada, işleviniz aşağıdaki gibi görünmelidir:

[FunctionName("HttpExample")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, 
    [Queue("outqueue"),StorageAccount("AzureWebJobsStorage")] ICollector<string> msg, 
    ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    string name = req.Query["name"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    name = name ?? data?.name;

    if (!string.IsNullOrEmpty(name))
    {
        // Add a message to the output collection.
        msg.Add(string.Format("Name passed to the function: {0}", name));
    }
    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

Şimdi, msg işlev kodunuzda çıkış bağlamaya yazmak için yeni parametresini kullanabilirsiniz. Değerini çıkış bağlamaya eklemek için, başarı yanıtından önce aşağıdaki kod satırını ekleyin name msg .

msg.setValue(name);

Çıkış bağlamayı kullandığınızda, kimlik doğrulaması, kuyruk başvurusu alma veya veri yazma için Azure depolama SDK kodunu kullanmanız gerekmez. Işlevler çalışma zamanı ve kuyruk çıkış bağlaması bu görevleri sizin için işler.

runYönteminiz aşağıdaki örnekteki gibi görünmelidir:

public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {
    context.getLogger().info("Java HTTP trigger processed a request.");

    // Parse query parameter
    String query = request.getQueryParameters().get("name");
    String name = request.getBody().orElse(query);

    if (name == null) {
        return request.createResponseBuilder(HttpStatus.BAD_REQUEST)
        .body("Please pass a name on the query string or in the request body").build();
    } else {
        // Write the name to the message queue. 
        msg.setValue(name);

        return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
    }
}

Testleri güncelleştirme

Ayrıca, aynı zamanda bir test kümesi oluşturduğundan, yöntem imzasında yeni parametreyi işlemek için bu testleri güncelleştirmeniz gerekir msg run .

Src/test/Java altındaki test kodunuzun konumuna gidin, function. Java proje dosyasını açın ve altındaki kod satırını //Invoke aşağıdaki kodla değiştirin.

@SuppressWarnings("unchecked")
final OutputBinding<String> msg = (OutputBinding<String>)mock(OutputBinding.class);
final HttpResponseMessage ret = new Function().run(req, msg, context);

Kimlik doğrulaması, kuyruk başvurusu alma veya veri yazma için kod yazmanıza gerek olmadığını gözlemleyin. Tüm bu tümleştirme görevleri, Azure Işlevleri çalışma zamanı ve sıra çıkış bağlamasında kolayca işlenir.

İş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.

İpucu

Başlangıç sırasında, ana bilgisayar depolama bağlama uzantısını ve diğer Microsoft bağlama uzantılarını indirir ve yükler. Bu yükleme, bağlama uzantıları aşağıdaki özelliklerle dosyadaki host.js varsayılan olarak etkinleştirildiğinden oluşur:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[1.*, 2.0.0)"
    }
}

Bağlama uzantılarıyla ilgili herhangi bir hatayla karşılaşırsanız, yukarıdaki özelliklerin host.js' de bulunduğundan emin olun.

Azure Depolama sırasındaki iletiyi görüntüleme

Kuyruğu Azure Portal veya Microsoft Azure Depolama Gezginigörüntüleyebilirsiniz. Ayrıca, aşağıdaki adımlarda açıklandığı gibi, kuyruğu Azure CLı 'de de görebilirsiniz:

  1. İşlev projesinin local.setting.jsdosya üzerinde açın ve bağlantı dizesi değerini kopyalayın. Bir Terminal veya komut penceresinde, AZURE_STORAGE_CONNECTION_STRING belirli bir Bağlantı dizenizi yerinde yapıştırarak adlı bir ortam değişkeni oluşturmak için aşağıdaki komutu çalıştırın <MY_CONNECTION_STRING> . (Bu ortam değişkeni, bağımsız değişkenini kullanarak sonraki her komuta bağlantı dizesi sağlamanız gerekmez --connection-string .)

    export AZURE_STORAGE_CONNECTION_STRING="<MY_CONNECTION_STRING>"
    
  2. Seçim az storage queue list Hesabınızdaki depolama kuyruklarını görüntülemek için komutunu kullanın. Bu komutun çıktısı, outqueue işlevi bu sıraya ilk iletisini yazmışsa oluşturulmuş adlı bir kuyruk içermelidir.

    az storage queue list --output tsv
    
  3. az storage message getBu kuyruktan iletiyi okumak için komutunu kullanın. Bu, daha önce işlev test edilirken kullandığınız ad olmalıdır. Komut kuyruktan ilk iletiyi okur ve kaldırır.

    echo `echo $(az storage message get --queue-name outqueue -o tsv --query '[].{Message:content}') | base64 --decode`
    

    İleti gövdesi Base64 kodlamalıdepolandığından, iletinin görüntülenmeden önce kodu çözülemedi. Yürütmeden sonra az storage message get ileti kuyruktan kaldırılır. İçinde yalnızca bir ileti varsa outqueue , bu komutu ikinci kez çalıştırıp bir hata elde ettiğinizde bir ileti almazsınız.

Projeyi Azure 'a yeniden dağıtın

işlevin azure Depolama kuyruğuna bir ileti yazdığını doğruladığınıza göre, azure üzerinde çalışan uç noktayı güncelleştirmek için projenizi yeniden dağıtabilirsiniz.

Localfunctionsproj klasöründe, func azure functionapp publish uygulamayı yeniden dağıtmak için komutunu kullanın ve bunu <APP_NAME> uygulamanızın adıyla değiştirin.

func azure functionapp publish <APP_NAME>

Yerel proje klasöründe, projenizi yeniden yayımlamak için aşağıdaki Maven komutunu kullanın:

mvn azure-functions:deploy

Azure 'da doğrulama

  1. Önceki hızlı başlangıçta olduğu gibi, yeniden dağıtılan işlevi sınamak için bir tarayıcı veya KıVRıMLı kullanın.

    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.

    İşlevin çıktısı Azure üzerinde bir tarayıcıda çalışır

  2. sıraya yazılan yeni iletiyi içerdiğini doğrulamak için, önceki bölümde açıklandığı gibi Depolama kuyruğu yeniden inceleyin.

Kaynakları temizleme

İşiniz bittiğinde, 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

HTTP ile tetiklenen işlevinizi bir Depolama kuyruğuna veri yazmak için güncelleştirdiniz. Artık çekirdek araçları ve Azure CLı kullanarak komut satırından Işlev geliştirme hakkında daha fazla bilgi edinebilirsiniz: