Samouczek: wyzwalanie usługi Azure Functions w kontenerach obiektów blob przy użyciu subskrypcji zdarzeń
Poprzednie wersje wyzwalacza usługi Azure Functions Blob Storage sonduj kontener magazynu pod kątem zmian. Nowsza wersja rozszerzenia usługi Blob Storage (5.x+) zamiast tego używa subskrypcji zdarzeń usługi Event Grid w kontenerze. Ta subskrypcja zdarzeń zmniejsza opóźnienie, wyzwalając funkcję natychmiast po wprowadzeniu zmian w subskrybowanych kontenerach.
W tym artykule pokazano, jak utworzyć funkcję uruchamianą na podstawie zdarzeń zgłaszanych podczas dodawania obiektu blob do kontenera. Program Visual Studio Code służy do tworzenia lokalnego i weryfikowania kodu przed wdrożeniem projektu na platformie Azure.
- Utwórz funkcję wyzwalaną przez usługę Blob Storage opartą na zdarzeniach w nowym projekcie.
- Zweryfikuj lokalnie w programie Visual Studio Code przy użyciu emulatora usługi Azurite.
- Utwórz kontener usługi Blob Storage na nowym koncie magazynu na platformie Azure.
- Utwórz aplikację funkcji w planie Flex Consumption.
- Utwórz subskrypcję zdarzeń do nowego kontenera obiektów blob.
- Wdrażanie i weryfikowanie kodu funkcji na platformie Azure.
Ten artykuł obsługuje wersję 4 modelu programowania Node.js dla usługi Azure Functions.
Ten artykuł obsługuje wersję 2 modelu programowania w języku Python dla usługi Azure Functions.
W tym artykule jest tworzona aplikacja w języku C#, która działa w trybie izolowanego procesu roboczego, który obsługuje platformę .NET 8.0.
Napiwek
W tym samouczku pokazano, jak utworzyć aplikację działającą w planie Flex Consumption. Plan Flex Consumption obsługuje tylko wersję zdarzeń wyzwalacza usługi Blob Storage.
Wymagania wstępne
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Program Visual Studio Code na jednej z obsługiwanych platform.
Rozszerzenie języka C# dla programu Visual Studio Code.
Rozszerzenie usługi Azure Functions dla programu Visual Studio Code.
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Node.js 14.x lub nowszym. Użyj polecenia ,
node --version
aby sprawdzić wersję.Program Visual Studio Code na jednej z obsługiwanych platform.
Rozszerzenie obsługujące usługę Azure Functions dla programu Visual Studio Code. To rozszerzenie instaluje narzędzia Azure Functions Core Tools po raz pierwszy podczas lokalnego uruchamiania funkcji.
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Program Visual Studio Code na jednej z obsługiwanych platform.
Rozszerzenie programu PowerShell dla programu Visual Studio Code.
Rozszerzenie obsługujące usługę Azure Functions dla programu Visual Studio Code.
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Wersje języka Python obsługiwane przez usługę Azure Functions. Aby uzyskać więcej informacji, zobacz How to install Python (Jak zainstalować język Python).
Program Visual Studio Code na jednej z obsługiwanych platform.
Rozszerzenie języka Python dla programu Visual Studio Code.
Rozszerzenie obsługujące usługę Azure Functions dla programu Visual Studio Code.
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Zestaw Java Development Kit, wersja 8, 11, 17 lub 21(Linux).
Narzędzie Apache Maven, wersja 3.0 lub nowsza.
Program Visual Studio Code na jednej z obsługiwanych platform.
Pakiet rozszerzenia Java
Rozszerzenie obsługujące usługę Azure Functions dla programu Visual Studio Code.
- Rozszerzenie usługi Azure Storage dla programu Visual Studio Code.
Uwaga
Rozszerzenie usługi Azure Storage dla programu Visual Studio Code jest obecnie dostępne w wersji zapoznawczej.
Tworzenie funkcji wyzwalanej przez obiekt blob
Podczas tworzenia funkcji wyzwalacza usługi Blob Storage przy użyciu programu Visual Studio Code utworzysz również nowy projekt. Musisz edytować funkcję, aby korzystać z subskrypcji zdarzeń jako źródła, zamiast używać zwykłego kontenera sondowanego.
W programie Visual Studio Code naciśnij F1, aby otworzyć paletę poleceń, wprowadź ,
Azure Functions: Create Function...
a następnie wybierz pozycję Utwórz nowy projekt.W obszarze roboczym projektu wybierz lokalizację katalogu. Upewnij się, że utworzono nowy folder lub wybrano pusty folder dla obszaru roboczego projektu.
Nie wybieraj folderu projektu, który jest już częścią obszaru roboczego.
- Po wyświetleniu monitów podaj następujące informacje:
Monit Akcja Wybieranie języka Wybierz opcję C#
.Wybieranie środowiska uruchomieniowego platformy .NET Wybierz opcję .NET 8.0 Isolated LTS
.Wybieranie szablonu dla pierwszej funkcji projektu Wybierz opcję Azure Blob Storage trigger (using Event Grid)
.Podaj nazwę funkcji Wprowadź EventGridBlobTrigger
.Podaj przestrzeń nazw Wprowadź My.Functions
.Wybierz ustawienie z "local.settings.json" Wybierz opcję Create new local app setting
.Wybierz subskrypcję W razie potrzeby wybierz swoją subskrypcję. Wybieranie konta magazynu Użyj emulatora usługi Azurite na potrzeby magazynu lokalnego. Ścieżka na koncie magazynu monitorowana przez wyzwalacz Zaakceptuj wartość samples-workitems
domyślną .Wybierz sposób otwierania projektu Wybierz opcję Open in current window
.Monit Akcja Wybieranie języka Wybierz opcję Python
.Wybieranie modelu programowania w języku Python Wybierz pozycję Model V2
Wybieranie interpretera języka Python w celu utworzenia środowiska wirtualnego Wybierz preferowany interpreter języka Python. Jeśli opcja nie jest wyświetlana, wprowadź pełną ścieżkę do pliku binarnego języka Python. Wybieranie szablonu dla pierwszej funkcji projektu Wybierz opcję Blob trigger
. (Szablon oparty na zdarzeniach nie jest jeszcze dostępny).Podaj nazwę funkcji Wprowadź EventGridBlobTrigger
.Ścieżka na koncie magazynu monitorowana przez wyzwalacz Zaakceptuj wartość samples-workitems
domyślną .Wybierz ustawienie z "local.settings.json" Wybierz opcję Create new local app setting
.Wybierz subskrypcję W razie potrzeby wybierz swoją subskrypcję. Wybieranie konta magazynu Użyj emulatora usługi Azurite na potrzeby magazynu lokalnego. Wybierz sposób otwierania projektu Wybierz opcję Open in current window
.Monit Akcja Wybieranie języka Wybierz opcję Java
.Wybieranie wersji języka Java Java 8
WybierzJava 11
wersję języka Java, w której działają funkcje na platformie Azure i czy zweryfikowano lokalnie.Podaj identyfikator grupy Wybierz opcję com.function
.Podaj identyfikator artefaktu Wybierz EventGridBlobTrigger
(lub wartość domyślną).Podaj wersję Wybierz opcję 1.0-SNAPSHOT
.Podaj nazwę pakietu Wybierz opcję com.function
.Podaj nazwę aplikacji Zaakceptuj wygenerowaną nazwę rozpoczynającą się od EventGridBlobTrigger
.Wybieranie narzędzia kompilacji dla projektu Java Wybierz opcję Maven
.Wybierz sposób otwierania projektu Wybierz opcję Open in current window
.Zostanie utworzona funkcja wyzwalana przez protokół HTTP (
HttpExample
). Nie będziesz używać tej funkcji i zamiast tego należy utworzyć nową funkcję.Monit Akcja Wybieranie języka projektu funkcji Wybierz opcję TypeScript
.Wybieranie modelu programowania TypeScript Wybierz opcję Model V4
.Wybieranie szablonu dla pierwszej funkcji projektu Wybierz opcję Azure Blob Storage trigger (using Event Grid)
.Podaj nazwę funkcji Wprowadź EventGridBlobTrigger
.Wybierz ustawienie z "local.settings.json" Wybierz opcję Create new local app setting
.Wybierz subskrypcję W razie potrzeby wybierz swoją subskrypcję. Wybieranie konta magazynu Użyj emulatora usługi Azurite na potrzeby magazynu lokalnego. Ścieżka na koncie magazynu monitorowana przez wyzwalacz Zaakceptuj wartość samples-workitems
domyślną .Wybierz sposób otwierania projektu Wybierz opcję Open in current window
.Monit Akcja Wybieranie języka projektu funkcji Wybierz opcję JavaScript
.Wybieranie modelu programowania JavaScript Wybierz opcję Model V4
.Wybieranie szablonu dla pierwszej funkcji projektu Wybierz opcję Azure Blob Storage trigger (using Event Grid)
.Podaj nazwę funkcji Wprowadź eventGridBlobTrigger
.Wybierz ustawienie z "local.settings.json" Wybierz opcję Create new local app setting
.Wybierz subskrypcję W razie potrzeby wybierz swoją subskrypcję. Wybieranie konta magazynu Użyj emulatora usługi Azurite na potrzeby magazynu lokalnego. Ścieżka na koncie magazynu monitorowana przez wyzwalacz Zaakceptuj wartość samples-workitems
domyślną .Wybierz sposób otwierania projektu Wybierz opcję Open in current window
.Monit Akcja Wybieranie języka projektu funkcji Wybierz opcję PowerShell
.Wybieranie szablonu dla pierwszej funkcji projektu Wybierz opcję Azure Blob Storage trigger (using Event Grid)
.Podaj nazwę funkcji Wprowadź EventGridBlobTrigger
.Wybierz ustawienie z "local.settings.json" Wybierz opcję Create new local app setting
.Wybierz subskrypcję W razie potrzeby wybierz swoją subskrypcję. Wybieranie konta magazynu Użyj emulatora usługi Azurite na potrzeby magazynu lokalnego. Ścieżka na koncie magazynu monitorowana przez wyzwalacz Zaakceptuj wartość samples-workitems
domyślną .Wybierz sposób otwierania projektu Wybierz opcję Open in current window
.
W palecie poleceń wprowadź
Azure Functions: Create Function...
i wybierz pozycjęEventGridBlobTrigger
. Jeśli ten szablon nie jest widoczny, najpierw wybierz pozycję Zmień filtr>szablonu Wszystkie.Po wyświetleniu monitów podaj następujące informacje:
Monit Akcja Podaj nazwę pakietu Wybierz opcję com.function
.Podaj nazwę funkcji Wprowadź EventGridBlobTrigger
.Wybierz ustawienie z "local.settings.json" Wybierz opcję Create new local app setting
.Wybierz subskrypcję Wybierz subskrypcję. Wybieranie konta magazynu Użyj emulatora usługi Azurite na potrzeby magazynu lokalnego. Ścieżka na koncie magazynu monitorowana przez wyzwalacz Zaakceptuj wartość samples-workitems
domyślną .
Masz teraz funkcję, która może być wyzwalana przez zdarzenia w kontenerze usługi Blob Storage.
Aktualizowanie źródła wyzwalacza
Najpierw musisz przełączyć źródło wyzwalacza z domyślnego źródła wyzwalacza obiektu blob (sondowanie kontenera) na źródło subskrypcji zdarzeń.
Otwórz plik projektu function_app.py i zobaczysz definicję
EventGridBlobTrigger
funkcji z zastosowanym dekoratoremblob_trigger
.Zaktualizuj dekorator, dodając element
source = "EventGrid"
. Funkcja powinna teraz wyglądać mniej więcej tak:@app.blob_trigger(arg_name="myblob", source="EventGrid", path="samples-workitems", connection="<STORAGE_ACCOUNT>") def EventGridBlobTrigger(myblob: func.InputStream): logging.info(f"Python blob trigger function processed blob" f"Name: {myblob.name}" f"Blob Size: {myblob.length} bytes")
W tej definicji
source = "EventGrid"
wskazuje, że subskrypcjasamples-workitems
zdarzeń do kontenera obiektów blob jest używana jako źródło zdarzenia, które uruchamia wyzwalacz.
(Opcjonalnie) Przeglądanie kodu
Otwórz wygenerowany EventGridBlobTrigger.cs
plik i zobaczysz definicję EventGridBlobTrigger
funkcji, która wygląda następująco:
[Function(nameof(EventGridBlobTriggerCSharp))]
public async Task Run([BlobTrigger("PathValue/{name}", Source = BlobTriggerSource.EventGrid, Connection = "ConnectionValue")] Stream stream, string name)
{
using var blobStreamReader = new StreamReader(stream);
var content = await blobStreamReader.ReadToEndAsync();
_logger.LogInformation($"C# Blob Trigger (using Event Grid) processed blob\n Name: {name} \n Data: {content}");
}
W tej definicji Source = BlobTriggerSource.EventGrid
wskazuje, że subskrypcja zdarzeń do kontenera obiektów blob (w przykładzie PathValue
) jest używana jako źródło zdarzenia, które uruchamia wyzwalacz.
Otwórz wygenerowany EventGridBlobTrigger.java
plik i zobaczysz definicję EventGridBlobTrigger
funkcji, która wygląda następująco:
@FunctionName("EventGridBlobTrigger")
@StorageAccount("<STORAGE_ACCOUNT>")
public void run(
@BlobTrigger(name = "content", source = "EventGrid", path = "samples-workitems/{name}", dataType = "binary") byte[] content,
@BindingName("name") String name,
final ExecutionContext context
) {
context.getLogger().info("Java Blob trigger function processed a blob. Name: " + name + "\n Size: " + content.length + " Bytes");
}
W tej definicji source = EventGrid
wskazuje, że subskrypcja samples-workitems
zdarzeń do kontenera obiektów blob jest używana jako źródło zdarzenia, które uruchamia wyzwalacz.
W folderze otwórz plik i znajdź definicję powiązania podobną do następującej z wartością i wartością type
source
blobTrigger
EventGrid
:function.json
EventGridBlobTrigger
{
"bindings": [
{
"name": "InputBlob",
"type": "blobTrigger",
"direction": "in",
"path": "samples-workitems/{name}",
"source": "EventGrid",
"connection":""
}
]
}
Wskazuje path
, że samples-workitems
kontener obiektów blob jest używany jako źródło zdarzenia, które uruchamia wyzwalacz.
Otwórz wygenerowany EventGridBlobTrigger.js
plik i zobaczysz definicję funkcji, która wygląda następująco:
const { app } = require('@azure/functions');
app.storageBlob('storageBlobTrigger1', {
path: 'samples-workitems/{name}',
connection: 'MyStorageAccountAppSetting',
source: 'EventGrid',
handler: (blob, context) => {
context.log(
`Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
);
},
});
W tej definicji element wskazuje source
EventGrid
, że subskrypcja zdarzeń w kontenerze samples-workitems
obiektów blob jest używana jako źródło zdarzenia, które uruchamia wyzwalacz.
Otwórz wygenerowany EventGridBlobTrigger.ts
plik i zobaczysz definicję funkcji, która wygląda następująco:
import { app, InvocationContext } from '@azure/functions';
export async function storageBlobTrigger1(blob: Buffer, context: InvocationContext): Promise<void> {
context.log(
`Storage blob function processed blob "${context.triggerMetadata.name}" with size ${blob.length} bytes`
);
}
app.storageBlob('storageBlobTrigger1', {
path: 'samples-workitems/{name}',
connection: 'MyStorageAccountAppSetting',
source: 'EventGrid',
handler: storageBlobTrigger1,
});
W tej definicji element wskazuje source
EventGrid
, że subskrypcja zdarzeń w kontenerze samples-workitems
obiektów blob jest używana jako źródło zdarzenia, które uruchamia wyzwalacz.
Uaktualnianie rozszerzenia magazynu
Aby użyć wyzwalacza usługi Blob Storage opartego na usłudze Event Grid, musisz mieć co najmniej wersję 5.x rozszerzenia usługi Azure Functions Storage.
Aby uaktualnić projekt przy użyciu wymaganej wersji rozszerzenia, w oknie terminalu uruchom następujące dotnet add package
polecenie:
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs
Otwórz plik projektu host.json i przejrzyj
extensionBundle
element .Jeśli
extensionBundle.version
nie ma co najmniej3.3.0
wartości , zastąpextensionBundle
element następującą wersją:"extensionBundle": { "id": "Microsoft.Azure.Functions.ExtensionBundle", "version": "[4.0.0, 5.0.0)" }
Przygotowywanie emulacji magazynu lokalnego
Program Visual Studio Code używa platformy Azurite do emulowania usług Azure Storage podczas uruchamiania lokalnego. Usługa Azurite służy do emulowania usługi Azure Blob Storage podczas lokalnego programowania i testowania.
Jeśli jeszcze tego nie zrobiono, zainstaluj rozszerzenie Azurite w wersji 3 dla programu Visual Studio Code.
Sprawdź, czy plik local.settings.json ma
"UseDevelopmentStorage=true"
ustawioną wartośćAzureWebJobsStorage
, która nakazuje narzędziom Core Tools używanie biblioteki Azurite zamiast rzeczywistego połączenia konta magazynu podczas uruchamiania lokalnego.Naciśnij F1, aby otworzyć paletę poleceń, wpisz
Azurite: Start Blob Service
, a następnie naciśnij Enter, który uruchamia emulator usługi Azurite Blob Storage.Wybierz ikonę platformy Azure na pasku działań, rozwiń węzeł Lokalne konta>magazynu dołączone do obszaru roboczego>, kliknij prawym przyciskiem myszy pozycję Kontenery obiektów blob, wybierz pozycję Utwórz kontener obiektów blob..., wprowadź nazwę
samples-workitems
i naciśnij Enter.Rozwiń węzeł Przykłady kontenerów>obiektów blob i wybierz pozycję Przekaż pliki....
Wybierz plik do przekazania do kontenera emulowanego lokalnie. Ten plik jest przetwarzany później przez funkcję w celu zweryfikowania i debugowania kodu funkcji. Plik tekstowy może działać najlepiej z kodem szablonu wyzwalacza obiektu blob.
Lokalne uruchamianie funkcji
Za pomocą pliku w emulowanym magazynie można uruchomić funkcję w celu symulowania zdarzenia zgłoszonego przez subskrypcję usługi Event Grid. Informacje o zdarzeniu przekazane do wyzwalacza zależą od pliku dodanego do kontenera lokalnego.
Ustaw wszystkie punkty przerwania i naciśnij F5, aby uruchomić projekt na potrzeby lokalnego debugowania. Narzędzia Azure Functions Core Tools powinny być uruchomione w oknie terminalu.
W obszarze platformy Azure rozwiń węzeł Funkcje lokalnego projektu> obszaru roboczego>, kliknij prawym przyciskiem myszy funkcję, a następnie wybierz polecenie Wykonaj funkcję teraz....
W oknie dialogowym treść żądania wpisz
samples-workitems/<TEST_FILE_NAME>
, zastępując<TEST_FILE_NAME>
ciąg nazwą pliku przekazanego w emulatorze magazynu lokalnego.Naciśnij Enter, aby uruchomić funkcję. Podana wartość to ścieżka do obiektu blob w lokalnym emulatorze. Ten ciąg jest przekazywany do wyzwalacza w ładunku żądania, który symuluje ładunek, gdy subskrypcja zdarzeń wywołuje funkcję, aby zgłosić dodanie obiektu blob do kontenera.
Przejrzyj dane wyjściowe wykonania tej funkcji. W danych wyjściowych powinny zostać wyświetlone nazwy pliku i jego zarejestrowanej zawartości. Jeśli ustawisz jakiekolwiek punkty przerwania, może być konieczne kontynuowanie wykonywania.
Teraz, gdy kod funkcji został pomyślnie zweryfikowany lokalnie, nadszedł czas, aby opublikować projekt w nowej aplikacji funkcji na platformie Azure.
Przygotowywanie konta usługi Azure Storage
Subskrypcje zdarzeń w usłudze Azure Storage wymagają konta magazynu ogólnego przeznaczenia w wersji 2. Do utworzenia tego konta magazynu można użyć rozszerzenia usługi Azure Storage dla programu Visual Studio Code.
W programie Visual Studio Code ponownie naciśnij F1, aby otworzyć paletę poleceń i wprowadzić polecenie
Azure Storage: Create Storage Account...
. Podaj te informacje po wyświetleniu monitu:Monit Akcja Wprowadź nazwę nowego konta magazynu Podaj nazwę unikatową w skali globalnej. Nazwy kont magazynu muszą mieć długość od 3 do 24 znaków z małymi literami i cyframi. Aby ułatwić identyfikację, użyjemy tej samej nazwy dla grupy zasobów i nazwy aplikacji funkcji. Wybieranie lokalizacji dla nowych zasobów Aby uzyskać lepszą wydajność, wybierz region blisko Ciebie. Rozszerzenie tworzy konto magazynu ogólnego przeznaczenia w wersji 2 o podanej nazwie. Ta sama nazwa jest również używana dla grupy zasobów zawierającej konto magazynu. Wyzwalacz usługi Blob Storage oparty na usłudze Event Grid wymaga konta magazynu ogólnego przeznaczenia w wersji 2.
Naciśnij F1 ponownie, a w palecie poleceń wprowadź ciąg
Azure Storage: Create Blob Container...
. Podaj te informacje po wyświetleniu monitu:Monit Akcja Wybierz zasób Wybierz utworzone konto magazynu ogólnego przeznaczenia w wersji 2. Wprowadź nazwę nowego kontenera obiektów blob Wprowadź samples-workitems
, czyli nazwę kontenera, do której odwołuje się projekt kodu.
Aplikacja funkcji wymaga również uruchomienia konta magazynu. Dla uproszczenia w tym samouczku używane jest to samo konto magazynu dla wyzwalacza obiektu blob i aplikacji funkcji. Jednak w środowisku produkcyjnym możesz chcieć użyć oddzielnego konta magazynu z aplikacją funkcji. Aby uzyskać więcej informacji, zobacz Zagadnienia dotyczące magazynu dla usługi Azure Functions.
Tworzenie aplikacji funkcji
Wykonaj następujące kroki, aby utworzyć aplikację funkcji w planie Flex Consumption. Gdy aplikacja jest hostowana w planie Flex Consumption, wyzwalacze usługi Blob Storage muszą używać subskrypcji zdarzeń.
Na palecie poleceń wprowadź wartość Azure Functions: Create function app in Azure... (Tworzenie aplikacji funkcji na platformie Azure... (Zaawansowane).
Po wyświetleniu monitów podaj następujące informacje:
Monit Wybór Wprowadź globalnie unikatową nazwę nowej aplikacji funkcji. Wpisz globalnie unikatową nazwę identyfikującą nową aplikację funkcji, a następnie wybierz Enter. Prawidłowe znaki dla nazwy aplikacji funkcji to a-z
,0-9
i-
.Wybierz plan hostingu. Wybierz pozycję Flex Consumption (Zużycie elastyczne). Wybierz stos środowiska uruchomieniowego. Wybierz stos języka i wersję, na której działasz lokalnie. Wybierz grupę zasobów dla nowych zasobów. Wybierz istniejącą grupę zasobów, w której utworzono konto magazynu. Wybierz lokalizację nowych zasobów. Wybierz lokalizację w obsługiwanym regionie w pobliżu ciebie lub w pobliżu innych usług, do których uzyskujesz dostęp do funkcji. Nieobsługiwane regiony nie są wyświetlane. Aby uzyskać więcej informacji, zobacz Wyświetlanie aktualnie obsługiwanych regionów. Wybierz konto magazynu. Wybierz nazwę utworzonego konta magazynu. Wybierz zasób usługi Application Insights dla aplikacji. Wybierz pozycję Utwórz nowy zasób usługi Application Insights, a po wyświetleniu monitu podaj nazwę wystąpienia używanego do przechowywania danych środowiska uruchomieniowego z funkcji. Po utworzeniu aplikacji funkcji zostanie wyświetlone powiadomienie. Wybierz pozycję Wyświetl dane wyjściowe w tym powiadomieniu, aby wyświetlić wyniki tworzenia, w tym utworzone zasoby platformy Azure.
Wdrażanie kodu funkcji
Ważne
Wdrażanie w istniejącej aplikacji funkcji zawsze zastępuje zawartość tej aplikacji na platformie Azure.
W palecie poleceń wprowadź i wybierz pozycję Azure Functions: Deploy to Function App (Azure Functions: Wdróż w aplikacji funkcji).
Wybierz właśnie utworzoną aplikację funkcji. Po wyświetleniu monitu o zastąpienie poprzednich wdrożeń wybierz pozycję Wdróż , aby wdrożyć kod funkcji w nowym zasobie aplikacji funkcji.
Po zakończeniu wdrażania wybierz pozycję Wyświetl dane wyjściowe , aby wyświetlić wyniki tworzenia i wdrażania, w tym utworzone zasoby platformy Azure. Jeśli przegapisz powiadomienie, wybierz ikonę dzwonka w prawym dolnym rogu, aby zobaczyć je ponownie.
Aktualizowanie ustawień aplikacji
Ponieważ wymagane ustawienia aplikacji z local.settings.json
pliku nie są automatycznie publikowane, należy przekazać je do aplikacji funkcji, aby funkcja działała poprawnie na platformie Azure.
Na palecie poleceń wprowadź ciąg
Azure Functions: Download Remote Settings...
, a w wierszu polecenia Wybierz zasób wybierz nazwę aplikacji funkcji.Po wyświetleniu monitu
AzureWebJobsStorage
o to, że ustawienie już istnieje, wybierz pozycję Tak, aby zastąpić ustawienie emulatora lokalnego rzeczywistym kontem magazynu parametry połączenia z platformy Azure.local.settings.json
W pliku zastąp ustawienie emulatora lokalnego tym samym parametry połączenia używanym.AzureWebJobsStorage
FUNCTIONS_WORKER_RUNTIME
Usuń wpis, który nie jest obsługiwany w planie Flex Consumption.Na palecie poleceń wprowadź ciąg
Azure Functions: Upload Local Settings...
, a w wierszu polecenia Wybierz zasób wybierz nazwę aplikacji funkcji.
Teraz zarówno host usługi Functions, jak i wyzwalacz współużytkują to samo konto magazynu.
Kompilowanie adresu URL punktu końcowego
Aby utworzyć subskrypcję zdarzeń, należy podać usłudze Event Grid adres URL określonego punktu końcowego w celu raportowania zdarzeń usługi Blob Storage. Ten adres URL rozszerzenia obiektu blob składa się z następujących części:
Element | Przykład |
---|---|
Podstawowy adres URL aplikacji funkcji | https://<FUNCTION_APP_NAME>.azurewebsites.net |
Ścieżka specyficzna dla obiektu blob | /runtime/webhooks/blobs |
Ciąg zapytania funkcji | ?functionName=Host.Functions.<FUNCTION_NAME> |
Klucz dostępu rozszerzenia obiektu blob | &code=<BLOB_EXTENSION_KEY> |
Klucz dostępu rozszerzenia obiektu blob został zaprojektowany w celu utrudninia innym osobom uzyskiwania dostępu do punktu końcowego rozszerzenia obiektu blob. Aby określić klucz dostępu rozszerzenia obiektu blob:
W programie Visual Studio Code wybierz ikonę platformy Azure na pasku Działania. W obszarze Zasoby rozwiń subskrypcję, rozwiń węzeł Aplikacja funkcji, kliknij prawym przyciskiem myszy utworzoną aplikację funkcji i wybierz pozycję Otwórz w portalu.
W obszarze Funkcje w menu po lewej stronie wybierz pozycję Klucze aplikacji.
W obszarze Klucze systemowe wybierz klucz o nazwie blobs_extension i skopiuj wartość klucza.
Ta wartość jest uwzględniana w ciągu zapytania nowego adresu URL punktu końcowego.
Utwórz nowy adres URL punktu końcowego dla wyzwalacza usługi Blob Storage na podstawie następującego przykładu:
https://<FUNCTION_APP_NAME>.azurewebsites.net/runtime/webhooks/blobs?functionName=Host.Functions.EventGridBlobTrigger&code=<BLOB_EXTENSION_KEY>
W tym przykładzie zastąp
<FUNCTION_APP_NAME>
ciąg nazwą aplikacji funkcji i<BLOB_EXTENSION_KEY>
wartością uzyskaną z portalu. Jeśli użyto innej nazwy funkcji, zastąpEventGridBlobTrigger
ciąg nazwą tej funkcji.
Teraz możesz użyć tego adresu URL punktu końcowego do utworzenia subskrypcji zdarzeń.
Tworzenie subskrypcji zdarzeń
Subskrypcja zdarzeń obsługiwana przez usługę Azure Event Grid zgłasza zdarzenia na podstawie zmian w subskrybowanym kontenerze obiektów blob. To zdarzenie jest następnie wysyłane do punktu końcowego rozszerzenia obiektu blob dla funkcji. Po utworzeniu subskrypcji zdarzeń nie można zaktualizować adresu URL punktu końcowego.
W programie Visual Studio Code wybierz ikonę platformy Azure na pasku Działania. W obszarze Zasoby rozwiń subskrypcję, rozwiń węzeł Konta magazynu, kliknij prawym przyciskiem myszy utworzone wcześniej konto magazynu i wybierz polecenie Otwórz w portalu.
Zaloguj się do witryny Azure Portal i zanotuj grupę zasobów dla konta magazynu. Inne zasoby są tworzone w tej samej grupie, aby ułatwić czyszczenie zasobów po zakończeniu pracy.
Wybierz opcję Zdarzenia z menu po lewej stronie.
W oknie Zdarzenia wybierz przycisk + Subskrypcja zdarzeń i podaj wartości z poniższej tabeli na karcie Podstawowa:
Ustawienie Sugerowana wartość opis Nazwa/nazwisko myBlobEventSub Nazwa identyfikująca subskrypcję zdarzeń. Możesz użyć nazwy , aby szybko znaleźć subskrypcję zdarzeń. Schemat zdarzeń Schemat usługi Event Grid Użyj domyślnego schematu dla zdarzeń. Nazwa tematu systemowego samples-workitems-blobs Nazwa tematu, który reprezentuje kontener. Temat jest tworzony przy użyciu pierwszej subskrypcji i będzie używany do przyszłych subskrypcji zdarzeń. Filtrowanie do typów zdarzeń Utworzony obiekt blob Typ punktu końcowego Web Hook Wyzwalacz magazynu obiektów blob używa punktu końcowego elementu Web Hook. Punkt końcowy Punkt końcowy adresu URL oparty na platformie Azure Użyj utworzonego punktu końcowego adresu URL, który zawiera wartość klucza. Wybierz pozycję Potwierdź wybór , aby zweryfikować adres URL punktu końcowego.
Wybierz kartę Filtry i podaj następujące informacje w monitach:
Ustawienie Sugerowana wartość opis Włączanie filtrowania tematów Włączono Włącza filtrowanie, na których obiekty blob mogą wyzwalać funkcję. Temat zaczyna się od /blobServices/default/containers/<CONTAINER_NAME>/blobs/<BLOB_PREFIX>
Zastąp <CONTAINER_NAME
wartości i<BLOB_PREFIX>
wybranymi wartościami. Spowoduje to ustawienie subskrypcji do wyzwalania tylko dla obiektów blob, które zaczynają się odBLOB_PREFIX
i znajdują się w kontenerzeCONTAINER_NAME
.Temat kończy się na .Txt Gwarantuje, że funkcja zostanie wyzwolona tylko przez obiekty blob kończące się na .txt
.
Aby uzyskać więcej informacji na temat filtrowania do określonych obiektów blob, zobacz Filtrowanie zdarzeń dla usługi Azure Event Hubs.
- Wybierz pozycję Utwórz , aby utworzyć subskrypcję zdarzeń.
Przekazywanie pliku do kontenera
Plik można przekazać z komputera do kontenera magazynu obiektów blob przy użyciu programu Visual Studio Code.
W programie Visual Studio Code naciśnij F1, aby otworzyć paletę poleceń i wpisz
Azure Storage: Upload Files...
.W oknie dialogowym Otwieranie wybierz plik, najlepiej plik tekstowy, a następnie wybierz pozycję Przekaż .
Podaj następujące informacje po wyświetleniu monitów:
Ustawienie Sugerowana wartość opis Wprowadź docelowy katalog tego przekazywania domyślna Po prostu zaakceptuj wartość /
domyślną , która jest katalogem głównym kontenera.Wybierz zasób Nazwa konta magazynu Wybierz nazwę konta magazynu utworzonego w poprzednim kroku. Wybieranie typu zasobu Kontenery obiektów blob Przekazujesz do kontenera obiektów blob. Wybieranie kontenera obiektów blob samples-workitems Ta wartość to nazwa kontenera utworzonego w poprzednim kroku.
Przejrzyj lokalny system plików, aby znaleźć plik do przekazania, a następnie wybierz przycisk Przekaż , aby przekazać plik.
Weryfikowanie funkcji na platformie Azure
Po przekazaniu pliku do kontenera samples-workitems funkcja powinna zostać wyzwolona. Możesz to sprawdzić, sprawdzając następujące elementy w witrynie Azure Portal:
Na koncie magazynu przejdź do strony Zdarzenia , wybierz pozycję Subskrypcje zdarzeń i powinno zostać wyświetlone zdarzenie. Na wykresie może wystąpić pięciominutowe opóźnienie zdarzenia.
Po powrocie na stronę aplikacji funkcji w portalu w obszarze Funkcje znajdź funkcję i wybierz pozycję Wywołania i nie tylko. Powinny zostać wyświetlone ślady zapisane z pomyślnego wykonania funkcji.
Czyszczenie zasobów
Gdy przejdziesz do następnego kroku i dodasz powiązanie kolejki usługi Azure Storage z funkcją, musisz zachować wszystkie zasoby na miejscu, aby opierać się na tym, co zostało już zrobione.
W przeciwnym razie możesz użyć poniższych kroków, aby usunąć aplikację funkcji i powiązane z nią zasoby, aby uniknąć ponoszenia dodatkowych kosztów.
W programie Visual Studio Code naciśnij F1 , aby otworzyć paletę poleceń. W palecie poleceń wyszukaj i wybierz pozycję
Azure: Open in portal
.Wybierz aplikację funkcji i naciśnij Enter. Strona aplikacji funkcji zostanie otwarta w witrynie Azure Portal.
Na karcie Przegląd wybierz nazwany link obok pozycji Grupa zasobów.
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, a następnie postępuj zgodnie z instrukcjami.
Usuwanie 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.
Aby uzyskać więcej informacji na temat kosztów usługi Functions, zobacz Szacowanie kosztów planu zużycia.