Łączenie funkcji z usługą Azure Storage przy użyciu programu Visual Studio

Azure Functions umożliwia łączenie usług platformy Azure i innych zasobów z funkcjami bez konieczności pisania własnego kodu integracji. Te powiązania, które reprezentują zarówno dane wejściowe, jak i wyjściowe, są deklarowane w definicji funkcji. Dane z powiązań są podawane do funkcji jako parametry. Wyzwalacz jest specjalnym typem powiązania wejściowego. Chociaż funkcja ma tylko jeden wyzwalacz, może mieć wiele powiązań wejściowych i wyjściowych. Aby dowiedzieć się więcej, zobacz pojęcia dotyczące wyzwalaczy i powiązań Azure Functions.

W tym artykule pokazano, jak używać programu Visual Studio do łączenia funkcji utworzonej w poprzednim artykule Szybki start z usługą Azure Storage. Powiązanie wyjściowe dodane do tej funkcji zapisuje dane z żądania HTTP do komunikatu w kolejce usługi Azure Queue Storage.

Większość powiązań wymaga przechowywanych parametrów połączenia używanych przez usługę Functions do uzyskiwania dostępu do powiązanej usługi. Aby ułatwić korzystanie z konta magazynu utworzonego za pomocą aplikacji funkcji. Połączenie z tym kontem jest już przechowywane w ustawieniu aplikacji o nazwie AzureWebJobsStorage.

Wymagania wstępne

Przed rozpoczęciem tego artykułu musisz:

Pobieranie ustawień aplikacji funkcji

W poprzednim artykule Szybki start utworzono aplikację funkcji na platformie Azure wraz z wymaganym kontem usługi Storage. Parametry połączenia dla tego konta są bezpiecznie przechowywane w ustawieniach aplikacji na platformie Azure. W tym artykule zapisujesz komunikaty w kolejce usługi Storage na tym samym koncie. Aby nawiązać połączenie z kontem magazynu podczas lokalnego uruchamiania funkcji, musisz pobrać ustawienia aplikacji do pliku local.settings.json .

  1. W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.

  2. Na karcie Publikowanie w obszarze Hosting rozwiń trzy kropki (...) i wybierz pozycję Zarządzaj ustawieniami Azure App Service.

    Edytowanie ustawień aplikacji

  3. W obszarze AzureWebJobsStorage skopiuj wartość Ciąg zdalny do pozycji Lokalne, a następnie wybierz przycisk OK.

Powiązanie magazynu, które używa AzureWebJobsStorage ustawienia dla połączenia, może teraz łączyć się z usługą Queue Storage podczas uruchamiania lokalnego.

Rejestrowanie rozszerzeń do wiązania

Ponieważ używasz powiązania wyjściowego usługi Queue Storage, przed uruchomieniem projektu potrzebne jest rozszerzenie Powiązania magazynu. Z wyjątkiem wyzwalaczy HTTP i czasomierza powiązania są implementowane jako pakiety rozszerzeń.

  1. Z menu Narzędzia wybierz pozycję Konsola menedżera pakietów NuGetPackage Manager>.

  2. W konsoli programu uruchom następujące polecenie Install-Package , aby zainstalować rozszerzenia magazynu:

    Install-Package Microsoft.Azure.WebJobs.Extensions.Storage 
    

Teraz możesz dodać powiązanie danych wyjściowych magazynu do projektu.

Dodawanie powiązania danych wyjściowych

W projekcie języka C# powiązania są definiowane jako atrybuty powiązania w metodzie funkcji. Określone definicje zależą od tego, czy aplikacja działa w procesie (biblioteka klas C#), czy w izolowanym procesie roboczym.

Otwórz plik projektu HttpExample.cs i dodaj następujący parametr do Run definicji metody:

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

Parametr msg jest typem ICollector<T> reprezentującym kolekcję komunikatów zapisywanych w powiązaniu wyjściowym po zakończeniu działania funkcji. W takim przypadku dane wyjściowe są kolejką magazynu o nazwie outqueue. Ustawia StorageAccountAttribute parametry połączenia dla konta magazynu. Ten atrybut wskazuje ustawienie, które zawiera parametry połączenia konta magazynu i można je zastosować na poziomie klasy, metody lub parametru. W takim przypadku można pominąć StorageAccountAttribute , ponieważ używasz już domyślnego konta magazynu.

Definicja metody Run musi teraz wyglądać podobnie do następującego kodu:

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

Dodawanie kodu korzystającego z powiązania danych wyjściowych

Po zdefiniowaniu powiązania można użyć name powiązania, aby uzyskać do niego dostęp jako atrybut w podpisie funkcji. Przy użyciu powiązania wyjściowego nie trzeba używać kodu zestawu SDK usługi Azure Storage do uwierzytelniania, pobierania odwołania do kolejki ani zapisywania danych. Powiązanie danych wyjściowych środowiska uruchomieniowego i kolejki usługi Functions wykonuje te zadania.

Dodaj kod, który używa obiektu powiązania wyjściowego msg do utworzenia komunikatu w kolejce. Dodaj ten kod przed zwróceniem metody .

if (!string.IsNullOrEmpty(name))
{
    // Add a message to the output collection.
    msg.Add(name);
}

W tym momencie funkcja musi wyglądać następująco:

[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(name);
    }
    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

Lokalne uruchamianie funkcji

  1. Aby uruchomić funkcję, naciśnij klawisz F5 w programie Visual Studio. Może być konieczne włączenie wyjątku zapory, aby narzędzia mogły obsługiwać żądania HTTP. Poziomy autoryzacji nigdy nie są wymuszane podczas lokalnego uruchamiania funkcji.

  2. Skopiuj adres URL funkcji z danych wyjściowych środowiska uruchomieniowego usługi Azure Functions.

    Lokalne środowisko uruchomieniowe platformy Azure

  3. Wklej adres URL żądania HTTP w pasku adresu przeglądarki. Dołącz ciąg ?name=<YOUR_NAME> zapytania do tego adresu URL i uruchom żądanie. Na poniższej ilustracji przedstawiono odpowiedź w przeglądarce na lokalne żądanie GET zwrócone przez funkcję:

    Odpowiedź hosta localhost funkcji wyświetlona w przeglądarce

  4. Aby zatrzymać debugowanie, naciśnij klawisze Shift+F5 w programie Visual Studio.

Nowa kolejka o nazwie outqueue jest tworzona na koncie magazynu przez środowisko uruchomieniowe usługi Functions po pierwszym użyciu powiązania wyjściowego. Użyjesz Eksplorator usługi Storage, aby sprawdzić, czy kolejka została utworzona wraz z nowym komunikatem.

Łączenie Eksploratora usługi Storage z kontem

Pomiń tę sekcję, jeśli masz już zainstalowaną Eksplorator usługi Azure Storage i połączono ją z kontem platformy Azure.

  1. Uruchom narzędzie Eksplorator usługi Azure Storage, wybierz ikonę połącz po lewej stronie, a następnie wybierz pozycję Dodaj konto.

    Zrzut ekranu przedstawiający sposób dodawania konta platformy Azure do Eksplorator usługi Microsoft Azure Storage.

  2. W oknie dialogowym Łączenie wybierz pozycję Dodaj konto platformy Azure, wybierz środowisko platformy Azure, a następnie wybierz pozycję Zaloguj się....

    Zrzut ekranu przedstawiający okno logowania do konta platformy Azure.

Po pomyślnym zalogowaniu się do konta zostaną wyświetlone wszystkie subskrypcje platformy Azure skojarzone z twoim kontem. Wybierz swoją subskrypcję i wybierz pozycję Otwórz Eksploratora.

Sprawdzanie kolejki wyjściowej

  1. W Eksplorator usługi Storage rozwiń węzeł Kolejki, a następnie wybierz kolejkę o nazwie outqueue.

    Kolejka zawiera komunikat utworzony za pomocą powiązania danych wyjściowych kolejki po uruchomieniu funkcji wyzwalanej przez protokół HTTP. Jeśli funkcja została wywołana przy użyciu domyślnego elementu name o wartości Azure, komunikat w kolejce to Nazwa przekazana do funkcji: Azure.

    Zrzut ekranu przedstawiający komunikat kolejki wyświetlany w Eksplorator usługi Azure Storage.

  2. Uruchom ponownie funkcję, wyślij kolejne żądanie i zobaczysz nowy komunikat w kolejce.

Teraz nadszedł czas na ponowne opublikowanie zaktualizowanej aplikacji funkcji na platformie Azure.

Ponowne wdrażanie i weryfikowanie zaktualizowanej aplikacji

  1. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz pozycję Publikuj, a następnie wybierz polecenie Publikuj, aby ponownie opublikować projekt na platformie Azure.

  2. Po zakończeniu wdrażania możesz ponownie użyć przeglądarki, aby przetestować ponownie wdrożoną funkcję. Tak jak poprzednio, dołącz ciąg &name=<yourname> zapytania do adresu URL.

  3. Ponownie wyświetl komunikat w kolejce magazynu, aby sprawdzić, czy powiązanie wyjściowe ponownie generuje nowy komunikat w kolejce.

Czyszczenie zasobów

Inne przewodniki Szybki start w tej kolekcji bazują na tym przewodniku. Jeśli planujesz pracę z kolejnymi przewodnikami Szybki start, samouczkami lub z dowolnymi usługami utworzonymi w tym przewodniku Szybki start, nie usuwaj zasobów.

Zasoby na platformie Azure dotyczą aplikacji funkcji, funkcji, kont magazynu i tak dalej. Są one pogrupowane w grupy zasobów i można usunąć wszystko w grupie, usuwając grupę.

Utworzono zasoby, aby ukończyć te przewodniki Szybki start. Opłaty za te zasoby mogą być naliczane w zależności od stanu konta i cen usług. Jeśli nie potrzebujesz już tych zasobów, oto jak możesz je usunąć:

  1. W witrynie Azure Portal przejdź do strony Grupa zasobów.

    Aby przejść do tej strony ze strony aplikacji funkcji, wybierz kartę Przegląd , a następnie wybierz link w obszarze Grupa zasobów.

    Zrzut ekranu przedstawiający wybieranie grupy zasobów do usunięcia ze strony aplikacji funkcji.

    Aby przejść do tej strony z pulpitu nawigacyjnego, wybierz pozycję Grupy zasobów, a następnie wybierz grupę zasobów użytą w tym artykule.

  2. Na stronie Grupa zasobów przejrzyj listę uwzględnionych zasobów i sprawdź, czy są to te, które chcesz usunąć.

  3. Wybierz pozycję Usuń grupę zasobów i postępuj zgodnie z instrukcjami.

    Usunięcie może potrwać kilka minut. Po jego zakończeniu przez kilka sekund będzie widoczne powiadomienie. Możesz również wybrać ikonę dzwonka w górnej części strony, aby wyświetlić powiadomienie.

Następne kroki

Zaktualizowano funkcję wyzwalaną przez protokół HTTP, aby zapisywać dane w kolejce usługi Storage. Aby dowiedzieć się więcej na temat tworzenia funkcji, zobacz Programowanie Azure Functions przy użyciu programu Visual Studio.

Następnie należy włączyć monitorowanie usługi Application Insights dla aplikacji funkcji: