Aracılığıyla paylaş


Komut satırı araçlarını kullanarak Azure Functions ve Azure Storage'ı bağlama.

Bu makalede, bir Azure Storage kuyruğunu önceki hızlı başlangıç makalesinde oluşturduğunuz işlev ve storage hesabıyla tümleştireceksiniz. Bu tümleştirme, bir HTTP isteğinden kuyruktaki bir mesaja veri yazan bir çıkış bağlaması kullanılarak gerçekleştirilir. Bu makalenin tamamlanması, önceki hızlı başlangıcın birkaç ABD doları sentinin ötesinde ek maliyet doğurmamaktadır. Bağlamalar hakkında daha fazla bilgi edinmek için bkz. Azure Functions tetikleyicileri ve bağlamaları kavramları.

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

Başlamadan önce Quickstart: Komut satırından Azure Functions project oluşturma makalesini tamamlamanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediyseniz, Azure'da işlev uygulamasını ve ilgili kaynakları yeniden oluşturmak için adımları yeniden izleyin.

Başlamadan önce Quickstart: Komut satırından Azure Functions project oluşturma makalesini tamamlamanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediyseniz, Azure'da işlev uygulamasını ve ilgili kaynakları yeniden oluşturmak için adımları yeniden izleyin.

Başlamadan önce Quickstart: Komut satırından Azure Functions project oluşturma makalesini tamamlamanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediyseniz, Azure'da işlev uygulamasını ve ilgili kaynakları yeniden oluşturmak için adımları yeniden izleyin.

Başlamadan önce Quickstart: Komut satırından Azure Functions project oluşturma makalesini tamamlamanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediyseniz, Azure'da işlev uygulamasını ve ilgili kaynakları yeniden oluşturmak için adımları yeniden izleyin.

Başlamadan önce Quickstart: Komut satırından Azure Functions project oluşturma makalesini tamamlamanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediyseniz, Azure'da işlev uygulamasını ve ilgili kaynakları yeniden oluşturmak için adımları yeniden izleyin.

Başlamadan önce Quickstart: Komut satırından Azure Functions project oluşturma makalesini tamamlamanız gerekir. Bu makalenin sonunda kaynakları zaten temizlediyseniz, Azure'da işlev uygulamasını ve ilgili kaynakları yeniden oluşturmak için adımları yeniden izleyin.

Azure Storage bağlantı dizesini al

Önemli

Bu makalede şu anda paylaşılan gizli anahtar içeren connection string kullanarak Azure Storage hesabınıza nasıl bağlandığınız gösterilmektedir. connection string kullanmak, storage hesabındaki veri güncelleştirmelerini doğrulamanızı kolaylaştırır. En iyi güvenlik için, storage hesabınıza bağlanırken yönetilen kimlikleri kullanmanız gerekir. Daha fazla bilgi için Bkz . Geliştirici Kılavuzu'ndaki Bağlantılar .

Daha önce işlev uygulamasının kullanımı için bir Azure Storage hesabı oluşturdunuz. Bu hesabın bağlantı dizesi, Azure'daki uygulama ayarlarında güvenli bir şekilde saklanır. ayarı local.settings.json dosyasına indirerek, işlevi yerel olarak çalıştırırken aynı hesaptaki bir Storage kuyruğuna yazmak için bağlantıyı kullanabilirsiniz.

  1. project kökünden aşağıdaki komutu çalıştırın ve <APP_NAME> yerine önceki adımdaki işlev uygulamanızın adını yazın. Bu komut, dosyadaki mevcut değerlerin üzerine yazar.

    func azure functionapp fetch-app-settings <APP_NAME>
    
  2. local.settings.json dosyasını açın ve Storage hesabı bağlantı dizesi olan AzureWebJobsStorage adlı değeri bulun. Bu makalenin diğer bölümlerinde AzureWebJobsStorage adını ve connection string kullanırsınız.

Önemli

local.settings.json dosyası Azure'dan indirilen gizli dizileri içerdiğinden, bu dosyayı her zaman kaynak denetiminden hariç tutun. Yerel işlevler projesiyle oluşturulan .gitignore dosyası, varsayılan olarak dosyayı hariç tutar.

Bağlama uzantılarını kaydetme

HTTP ve zamanlayıcı tetikleyicileri dışında bağlamalar uzantı paketleri olarak uygulanır. Storage uzantı paketini project eklemek için Terminal penceresinde aşağıdaki dotnet add package komutunu çalıştırın.

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Queues --prerelease

Artık projenize depolama çıkış bağlaması ekleyebilirsiniz.

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

Bir işlevin yalnızca bir tetikleyicisi 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.

Node.js v4 programlama modeli kullanılırken bağlama öznitelikleri doğrudan ./src/functions/HttpExample.js dosyasında tanımlanır. Önceki hızlı başlangıç kılavuzundan dosyanız, app.http metodu tarafından tanımlanan bir HTTP bağlaması içeriyor.

const { app } = require('@azure/functions');

app.http('httpTrigger', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  handler: async (request, context) => {
    try {
      context.log(`Http function processed request for url "${request.url}"`);

      const name = request.query.get('name') || (await request.text());
      context.log(`Name: ${name}`);

      if (!name) {
        return { status: 404, body: 'Not Found' };
      }

      return { body: `Hello, ${name}!` };
    } catch (error) {
      context.log(`Error: ${error}`);
      return { status: 500, body: 'Internal Server Error' };
    }
  },
});

Node.js v4 programlama modeli kullanılırken bağlama öznitelikleri doğrudan ./src/functions/HttpExample.js dosyasında tanımlanır. Önceki hızlı başlangıç kılavuzundan dosyanız, app.http metodu tarafından tanımlanan bir HTTP bağlaması içeriyor.

import {
  app,
  HttpRequest,
  HttpResponseInit,
  InvocationContext,
} from '@azure/functions';

export async function httpTrigger1(
  request: HttpRequest,
  context: InvocationContext,
): Promise<HttpResponseInit> {
  context.log(`Http function processed request for url "${request.url}"`);

  const name = request.query.get('name') || (await request.text()) || 'world';

  return { body: `Hello, ${name}!` };
}

app.http('httpTrigger1', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  handler: httpTrigger1,
});

Bu bağlamaları işlev klasörünüzdeki function.json dosyasında bildirirsiniz. Önceki hızlı başlangıçtan itibaren, HttpExample klasöründeki function.json dosyanız, koleksiyonunda iki bağlama içerir:

Python v2 programlama modeli kullanılırken bağlama öznitelikleri doğrudan function_app.py dosyasında dekoratör olarak tanımlanır. Önceki hızlı başlangıçtan itibaren, function_app.py dosyanız zaten bir dekoratör tabanlı bağlama içeriyor:

import azure.functions as func
import logging

app = func.FunctionApp()

@app.function_name(name="HttpTrigger1")
@app.route(route="hello", auth_level=func.AuthLevel.ANONYMOUS)

route dekoratörü, işlevinize HttpTrigger ve HttpOutput bağlamalarını ekler; bu sayede http istekleri belirtilen yola ulaşınca işleviniz tetiklenir.

Bu işlevden bir Azure Storage kuyruğuna yazmak için işlev koduna queue_output dekoratörü ekleyin.

@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")

Dekoratörde, arg_name kodunuzda başvuruda bulunan bağlama parametresini tanımlar, queue_name bağlamanın yazdığı kuyruğun adıdır ve connection, Storage hesabının connection string içeren bir uygulama ayarının adıdır. Hızlı başlangıçlarda, AzureWebJobsStorage ayarında (local.settings.json dosyasındaki) işlev uygulamasıyla aynı storage hesabını kullanırsınız. queue_name olmadığında, bağlama ilk kullanımda onu oluşturur.

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

Azure Storage kuyruğuna yazmak için:

  • Bağlama yapılandırmasına extraOutputs özelliğini ekleyin

    {
        methods: ['GET', 'POST'],
        extraOutputs: [sendToQueue], // add output binding to HTTP trigger
        authLevel: 'anonymous',
        handler: () => {}
    }
    
  • output.storageQueue çağrısından önce bir app.http fonksiyonu ekleyin

    const sendToQueue: StorageQueueOutput = output.storageQueue({
      queueName: 'outqueue',
      connection: 'AzureWebJobsStorage',
    });
    

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

Bu işlevden bir Azure Storage kuyruğuna yazmak için, aşağıdaki kodda gösterildiği gibi out türünde queue adlı bir msg bağlaması 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"
    }
  ]
}

queue türü için, queueName'da kuyruğun adını belirtmeniz ve 'da Azure Storage bağlantısının name sağlamanız gerekir (connection dosyasından).

C# projelerinde bağlamalar, fonksiyon metodunda bağlama öznitelikleri olarak tanımlanır. Belirli tanımlar, uygulamanızın işlem içinde mi (C# sınıf kitaplığı) yoksa yalıtılmış bir çalışan işleminde mi çalıştığına bağlıdır.

HttpExample.cs project dosyasını açın ve aşağıdaki MultiResponse sınıfını ekleyin:

public class MultiResponse
{
    [QueueOutput("outqueue", Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

MultiResponse sınıfı, outqueue adlı bir storage kuyruğuna ve bir HTTP başarı iletisi yazmanıza olanak tanır. Öznitelik bir dize dizisine uygulandığından kuyruğa QueueOutput birden çok ileti gönderilebilir.

Connection özelliği, depolama hesabı için bağlantı dizesini ayarlar. Bu durumda, varsayılan storage hesabını zaten kullandığınız için Connection atlayabilirsiniz.

Java projesinde bağlamalar, fonksiyon metodunda bağlama ek açıklamaları olarak tanımlamalar. function.json dosyası daha sonra bu ek açıklamalara göre otomatik olarak oluşturulur.

src/main/java altında işlev kodunuzun konumuna göz atın, Function.java project dosyasını açın ve run yöntem tanımına aşağıdaki parametreyi ekleyin:

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

msg parametresi, dize koleksiyonunu temsil eden bir OutputBinding<T> türüdür. Bu dizeler, işlev tamamlandığında bir çıkış bağlamasına ileti olarak yazılır. Bu durumda çıkış, outqueue adlı bir depolama kuyruğudur. Storage hesabının bağlantı dizesi connection yöntemi ile ayarlanır. Bağlantı dizgisini doğrudan geçirmek yerine, Storage hesabı bağlantı dizgisini içeren uygulama ayarını geçirirsiniz.

Yöntem run tanımı artık 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 Functions tetikleyicileri ve bağlamaları kavramları ve queue çıktı yapılandırması.

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

Kuyruk bağlaması tanımlandığında, artık işlevinizi çıkış parametresini alacak msg ve kuyruğa ileti yazacak şekilde güncelleştirebilirsiniz.

HttpExample\function_app.py öğesini aşağıdaki kodla eşleşecek şekilde güncelleştirin, parametresini işlev tanımına ve msg deyiminin msg.set(name) altına ekleyinif name::

import azure.functions as func
import logging

app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    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}. This HTTP triggered function executed successfully.")
    else:
        return func.HttpResponse(
             "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
             status_code=200
        )

msg parametresi, azure.functions.Out class örneğidir. set yöntemi kuyruğa bir dize iletisi yazar. Bu durumda, URL sorgu dizesindeki name, işleve geçirilir.

Kuyruk iletisi oluşturmak için çıkış context.extraOutputs bağlama nesnesini kullanan kodu ekleyin. Bu kodu return deyiminden önce ekleyin.

context.extraOutputs.set(sendToQueue, [msg]);

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

const { app, output } = require('@azure/functions');

const sendToQueue = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  extraOutputs: [sendToQueue],
  handler: async (request, context) => {
    try {
      context.log(`Http function processed request for url "${request.url}"`);

      const name = request.query.get('name') || (await request.text());
      context.log(`Name: ${name}`);

      if (name) {
        const msg = `Name passed to the function ${name}`;
        context.extraOutputs.set(sendToQueue, [msg]);
        return { body: msg };
      } else {
        context.log('Missing required data');
        return { status: 404, body: 'Missing required data' };
      }
    } catch (error) {
      context.log(`Error: ${error}`);
      return { status: 500, body: 'Internal Server Error' };
    }
  },
});

Kuyruk iletisi oluşturmak için çıkış context.extraOutputs bağlama nesnesini kullanan kodu ekleyin. Bu kodu return deyiminden önce ekleyin.

context.extraOutputs.set(sendToQueue, [msg]);

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

import {
  app,
  output,
  HttpRequest,
  HttpResponseInit,
  InvocationContext,
  StorageQueueOutput,
} from '@azure/functions';

const sendToQueue: StorageQueueOutput = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

export async function HttpExample(
  request: HttpRequest,
  context: InvocationContext,
): Promise<HttpResponseInit> {
  try {
    context.log(`Http function processed request for url "${request.url}"`);

    const name = request.query.get('name') || (await request.text());
    context.log(`Name: ${name}`);

    if (name) {
      const msg = `Name passed to the function ${name}`;
      context.extraOutputs.set(sendToQueue, [msg]);
      return { body: msg };
    } else {
      context.log('Missing required data');
      return { status: 404, body: 'Missing required data' };
    }
  } catch (error) {
    context.log(`Error: ${error}`);
    return { status: 500, body: 'Internal Server Error' };
  }
}

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  handler: HttpExample,
});

Push-OutputBinding cmdlet'ini kullanarak metni kuyruğa yazmak için msg çıktı bağlantısını kullanan kod ekleyin. if ifadesinde "Tamam" durumunu ayarlamadan önce bu kodu ekleyin.

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

Bu noktada işlevinizin aşağıdaki gibi görünmesi gerekir:

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
})

Mevcut Run yöntemi aşağıdaki kodla değiştirin:

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{
    _logger.LogInformation("C# HTTP trigger function processed a request.");

    var message = "Welcome to Azure Functions!";

    // Return a response to both HTTP trigger and storage output binding.
    return new MultiResponse()
    {
        // Write a single message.
        Messages = new string[] { message },
        HttpResponse = new OkObjectResult(message)
    };
}

Artık işlev kodunuzdan çıkış bağlamasına yazmak için yeni msg parametresini kullanabilirsiniz. Başarı yanıtından önce name değerini msg çıkış bağlamasına eklemek için aşağıdaki kod satırını ekleyin.

msg.setValue(name);

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

Yönteminiz run şimdi 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

Arketip bir dizi test de oluşturduğundan, yöntem imzasında msg yeni run parametreyi işlemek için bu testleri güncelleştirmeniz gerekir.

src/test/java altında test kodunuzun konumuna göz atın, Function.java project dosyasını açın ve //Invoke altındaki kod satırını 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 herhangi bir kod yazmanıza gerek olmadığını gözlemleyin. Tüm bu tümleştirme görevleri, Azure Functions çalışma zamanı ve kuyruk çıktı bağlamasında rahatça işlenir.

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

  1. yerel Azure Functions çalışma zamanı ana bilgisayarı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:

     Işlevi yerel olarak çalıştırırken terminal penceresi çıkışının ekran görüntüsü.

    Not

    HttpExample yukarıda gösterildiği gibi görünmüyorsa, konağı büyük olasılıkla project kök klasörünün dışından başlatmış olursunuz. Bu durumda konağı durdurmak için Ctrl+C kullanın, project 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 bulunduğunuzda günlük çıktısını da gösterir.

  3. İşiniz bittiğinde, Ctrl + C tuşlarına basın ve fonksiyon barındırıcısını durdurmak için y yazın.

Azure Storage kuyruğunda iletiyi görüntüleme

Kuyruğu Azure portal veya Microsoft Azure Storage Explorer görüntüleyebilirsiniz. Aşağıdaki adımlarda açıklandığı gibi kuyruğu Azure CLI de görüntüleyebilirsiniz:

  1. İşlev project local.setting.json dosyasını açın ve connection string değerini kopyalayın. Terminalde veya komut penceresinde aşağıdaki komutu çalıştırarak AZURE_STORAGE_CONNECTION_STRING adlı bir ortam değişkeni oluşturun ve <MY_CONNECTION_STRING> yerine belirli connection string yapıştırın. (Bu ortam değişkeni, --connection-string bağımsız değişkenini kullanarak sonraki her komut için bağlantı dizesi sağlamanız gerekmeyecek anlamına gelir.)

    export AZURE_STORAGE_CONNECTION_STRING="<MY_CONNECTION_STRING>"
    
  2. (İsteğe bağlı) Hesabınızdaki Storage kuyruklarını görüntülemek için az storage queue list komutunu kullanın. Bu komutun çıktısı, işlev bu kuyruğa ilk iletisini yazdığında oluşturulan adlı outqueuebir kuyruk içermelidir.

    az storage queue list --output tsv
    
  3. bu kuyruktan iletiyi okumak için az storage message get komutunu kullanın. Bu, işlevi test ederken sağladığınız değer 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 kodlanmış depolandığından, ileti görüntülenmeden önce kodunun çözülmesi gerekir. az storage message get yürüttkten sonra ileti kuyruktan kaldırılır. içinde outqueueyalnızca bir ileti varsa, bu komutu ikinci kez çalıştırdığınızda bir ileti almazsınız ve bunun yerine bir hata alırsınız.

Projeyi Azure'a yeniden dağıtın.

İşlevin Azure Storage kuyruğuna bir ileti yazdığını yerel olarak doğruladıktan sonra, Azure üzerinde çalışan uç noktayı güncelleştirmek için project yeniden dağıtabilirsiniz.

LocalFunctionsProj klasöründe, project yeniden dağıtmak için func azure functionapp publish komutunu kullanın; yerine<APP_NAME> yerine uygulamanızın adını yazın.

func azure functionapp publish <APP_NAME>

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

mvn azure-functions:deploy

Azure'de doğrulama

  1. Önceki hızlı başlangıçta olduğu gibi, yeniden dağıtılan işlevi test etmek için bir tarayıcı veya CURL kullanın.

    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ızla aynı çıkışı görüntülemelidir.

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

Kaynakları temizleme

bitirdikten sonra, 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

HTTP ile tetiklenen işlevinizi bir Storage kuyruğuna veri yazacak şekilde güncelleştirdiniz. Artık Temel Araçlar ve Azure CLI kullanarak komut satırından İşlev geliştirme hakkında daha fazla bilgi edinebilirsiniz: