Łą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:
- Ukończ część 1 przewodnika Szybki start programu Visual Studio.
- Zainstaluj Eksplorator usługi Azure Storage. Eksplorator usługi Storage to narzędzie, które służy do badania komunikatów kolejki generowanych przez powiązanie wyjściowe. Eksplorator usługi Storage jest obsługiwana w systemach operacyjnych macOS, Windows i Linux.
- Zaloguj się do subskrypcji platformy Azure z poziomu programu Visual Studio.
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 .
W Eksploratorze rozwiązań kliknij prawym przyciskiem myszy projekt i wybierz polecenie Opublikuj.
Na karcie Publikowanie w obszarze Hosting rozwiń trzy kropki (...) i wybierz pozycję Zarządzaj ustawieniami Azure App Service.
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ń.
Z menu Narzędzia wybierz pozycję Konsola menedżera pakietów NuGetPackage Manager>.
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
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.
Skopiuj adres URL funkcji z danych wyjściowych środowiska uruchomieniowego usługi Azure Functions.
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ę: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.
Uruchom narzędzie Eksplorator usługi Azure Storage, wybierz ikonę połącz po lewej stronie, a następnie wybierz pozycję Dodaj konto.
W oknie dialogowym Łączenie wybierz pozycję Dodaj konto platformy Azure, wybierz środowisko platformy Azure, a następnie wybierz pozycję Zaloguj się....
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
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.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
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.
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.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ąć:
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.
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.
Na stronie Grupa zasobów przejrzyj listę uwzględnionych zasobów i sprawdź, czy są to te, które chcesz usunąć.
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: