Udostępnij za pomocą


Szybki start: tworzenie funkcji na platformie Azure z poziomu wiersza polecenia

W tym artykule użyjesz lokalnych narzędzi wiersza polecenia, aby utworzyć funkcję, która odpowiada na żądania HTTP. Po zweryfikowaniu kodu lokalnie należy wdrożyć go w bezserwerowym planie hostingu Flex Consumption w usłudze Azure Functions.

Ukończenie tego szybkiego startu wiąże się z naliczeniem niewielkiej opłaty wynoszącej kilka centów USD lub mniej na koncie Azure.

Pamiętaj, aby wybrać preferowany język programowania w górnej części artykułu.

Prerequisites

  • Przejdź do najnowszej zalecanej wersji. Użyj polecenia go version, aby sprawdzić swoją wersję.

Instalowanie podstawowych narzędzi usługi Azure Functions

Zalecany sposób instalowania narzędzi Core Tools zależy od systemu operacyjnego lokalnego komputera programistycznego.

Poniższe kroki umożliwiają zainstalowanie narzędzi Core Tools w wersji 4.x za pomocą Instalatora Windows (MSI). Aby uzyskać więcej informacji na temat innych instalatorów opartych na pakietach, zobacz plik readme narzędzi Core Tools.

Pobierz i uruchom instalatora narzędzi Core Tools na podstawie używanej wersji systemu Windows:

Jeśli poprzednio użyto instalatora Windows (MSI) do zainstalowania narzędzi Core Tools w systemie Windows, przed zainstalowaniem najnowszej wersji należy odinstalować starą wersję z sekcji Dodaj usuń programy.

Tworzenie i aktywowanie środowiska wirtualnego

W odpowiednim folderze uruchom następujące polecenia, aby utworzyć i aktywować środowisko wirtualne o nazwie .venv. Upewnij się, że używasz jednej z wersji języka Python obsługiwanych przez usługę Azure Functions.

python -m venv .venv
source .venv/bin/activate

Jeśli język Python nie zainstalował pakietu venv w dystrybucji systemu Linux, uruchom następujące polecenie:

sudo apt-get install python3-venv

Wszystkie kolejne polecenia są uruchamiane w tym aktywowanym środowisku wirtualnym.

Tworzenie lokalnego projektu kodu i funkcji

W usłudze Azure Functions projekt kodu to aplikacja zawierająca co najmniej jedną pojedynczą funkcję, która odpowiada na określony wyzwalacz. Wszystkie funkcje w projekcie współużytkują te same konfiguracje i są wdrażane jako jednostka na platformie Azure. W tej sekcji utworzysz projekt kodu zawierający jedną funkcję.

  1. W terminalu lub wierszu polecenia uruchom to func init polecenie, aby utworzyć projekt aplikacji funkcji w bieżącym folderze:

    func init --worker-runtime dotnet-isolated 
    
  1. W terminalu lub wierszu polecenia uruchom to func init polecenie, aby utworzyć projekt aplikacji funkcji w bieżącym folderze:

    func init --worker-runtime node --language javascript 
    
  1. W terminalu lub wierszu polecenia uruchom to func init polecenie, aby utworzyć projekt aplikacji funkcji w bieżącym folderze:

    func init --worker-runtime powershell 
    
  1. W terminalu lub wierszu polecenia uruchom to func init polecenie, aby utworzyć projekt aplikacji funkcji w bieżącym folderze:

    func init --worker-runtime python 
    
  1. W terminalu lub wierszu polecenia uruchom to func init polecenie, aby utworzyć projekt aplikacji funkcji w bieżącym folderze:

    func init --worker-runtime node --language typescript 
    
  1. W terminalu lub wierszu polecenia uruchom to func init polecenie, aby utworzyć projekt aplikacji funkcji w bieżącym folderze:

    func init --worker-runtime custom 
    
  1. W pustym folderze uruchom to mvn polecenie, aby wygenerować projekt kodu na podstawie archetypu narzędzia Maven usługi Azure Functions:

    mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=17
    

    Important

    • Użyj polecenia -DjavaVersion=11, jeśli chcesz, aby funkcje działały w języku Java 11. Aby dowiedzieć się więcej, zobacz Wersje języka Java.
    • Ustaw zmienną JAVA_HOME środowiskową na lokalizację instalacji poprawnej wersji zestawu JDK, aby ukończyć ten artykuł.
  2. Narzędzie Maven prosi o podanie wartości potrzebnych do zakończenia generowania projektu we wdrożeniu.
    Po wyświetleniu monitu podaj następujące wartości:

    Prompt Value Description
    groupId com.fabrikam Wartość, która jednoznacznie identyfikuje projekt we wszystkich projektach, zgodnie z regułami nazewnictwa pakietów dla języka Java.
    artifactId fabrikam-functions Wartość, która jest nazwą pliku jar bez numeru wersji.
    version 1.0-SNAPSHOT Wybierz wartość domyślną.
    package com.fabrikam Wartość, która jest pakietem Java dla wygenerowanego kodu funkcji. Użyj wartości domyślnej.
  3. Wpisz Y lub naciśnij Enter, aby potwierdzić.

    Narzędzie Maven tworzy pliki projektu w nowym folderze o nazwie artifactId, która w tym przykładzie to fabrikam-functions.

  4. Przejdź do folderu projektu:

    cd fabrikam-functions
    

    Możesz przejrzeć kod wygenerowany przez szablon dla nowej funkcji wyzwalacza HTTP w Function.java w katalogu projektu \src\main\java\com\fabrikam .

  1. Użyj tego func new polecenia, aby dodać funkcję do projektu:

    func new --name HttpExample --template "HTTP trigger" --authlevel "function"
    

    Nowy plik kodu jest dodawany do projektu. W tym przypadku --name argument jest unikatową nazwą funkcji (HttpExample), a --template argument określa wyzwalacz HTTP.

Folder główny projektu zawiera różne pliki dla projektu, w tym pliki konfiguracji o nazwie local.settings.json i host.json. Ponieważ local.settings.json może zawierać wpisy tajne pobrane z platformy Azure, plik jest domyślnie wykluczony z kontroli źródła w pliku gitignore .

Tworzenie i tworzenie funkcji

Plik function.json w folderze HttpExample deklaruje funkcję wyzwalacza HTTP. Wykonasz tę funkcję, dodając procedurę obsługi i kompilując ją do pliku wykonywalnego.

  1. Naciśnij Ctrl + N (Cmd + N w systemie macOS), aby utworzyć nowy plik. Zapisz go jako plik handler.go w katalogu głównym aplikacji funkcji (w tym samym folderze co host.json).

  2. W pliku handler.go dodaj następujący kod i zapisz plik. Jest to niestandardowa procedura obsługi języka Go.

    package main
    
    import (
        "fmt"
        "log"
        "net/http"
        "os"
    )
    
    func helloHandler(w http.ResponseWriter, r *http.Request) {
        message := "This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response.\n"
        name := r.URL.Query().Get("name")
        if name != "" {
            message = fmt.Sprintf("Hello, %s. This HTTP triggered function executed successfully.\n", name)
        }
        fmt.Fprint(w, message)
    }
    
    func main() {
        listenAddr := ":8080"
        if val, ok := os.LookupEnv("FUNCTIONS_CUSTOMHANDLER_PORT"); ok {
            listenAddr = ":" + val
        }
        http.HandleFunc("/api/HttpExample", helloHandler)
        log.Printf("About to listen on %s. Go to https://127.0.0.1%s/", listenAddr, listenAddr)
        log.Fatal(http.ListenAndServe(listenAddr, nil))
    }
    
  3. Naciśnij Ctrl + Shift + ' lub wybierz pozycję Nowy terminal z menu Terminal , aby otworzyć nowy zintegrowany terminal w programie VS Code.

  4. Skompiluj niestandardową procedurę obsługi przy użyciu następującego polecenia. Plik wykonywalny o nazwie handler (handler.exe w systemie Windows) jest danymi wyjściowymi w folderze głównym aplikacji funkcji.

    go build handler.go
    

Konfigurowanie aplikacji funkcji

Host funkcji musi być skonfigurowany do uruchamiania niestandardowego pliku binarnego programu obsługi.

  1. Otwórz host.json.

  2. customHandler.description W sekcji ustaw wartość defaultExecutablePath na handler (w systemie Windows ustaw ją na wartość handler.exe).

  3. customHandler W sekcji dodaj właściwość o nazwie enableForwardingHttpRequest i ustaw jej wartość na true. W przypadku funkcji składających się tylko z wyzwalacza HTTP to ustawienie upraszcza programowanie, umożliwiając pracę z typowym żądaniem HTTP zamiast ładunku żądania niestandardowego programu obsługi.

  4. Upewnij się, customHandler że sekcja wygląda podobnie do tego przykładu. Zapisz plik.

    "customHandler": {
      "description": {
        "defaultExecutablePath": "handler",
        "workingDirectory": "",
        "arguments": []
      },
      "enableForwardingHttpRequest": true
    }
    

Aplikacja funkcji jest skonfigurowana do uruchamiania niestandardowego pliku wykonywalnego programu obsługi.

Lokalne uruchamianie funkcji

Zweryfikuj nową funkcję, uruchamiając projekt lokalnie i wywołując punkt końcowy funkcji.

  1. Użyj tego polecenia, aby uruchomić lokalnego hosta środowiska uruchomieniowego usługi Azure Functions w katalogu głównym folderu projektu:

    func start  
    
    npm install
    npm start
    
    mvn clean package  
    mvn azure-functions:run
    

    Na końcu danych wyjściowych są wyświetlane następujące wiersze:

     ...
    
     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
     ...
    
     
  2. Skopiuj adres URL swojej funkcji HttpExample z tych danych wyjściowych do przeglądarki i przejdź do adresu URL funkcji. Powinna pojawić się odpowiedź na powodzenie z komunikatem "hello world".

    Note

    Ponieważ autoryzacja klucza dostępu nie jest wymuszana podczas uruchamiania lokalnego, zwrócony adres URL funkcji nie zawiera wartości klucza dostępu i nie jest potrzebny do wywołania funkcji.

  3. Gdy skończysz, użyj Ctrl+C i wybierz, y aby zatrzymać hosta funkcji.

Utwórz zasoby pomocnicze platformy Azure dla swojej funkcji

Przed wdrożeniem kodu funkcji na platformie Azure należy utworzyć następujące zasoby:

  • Grupa zasobów, która jest kontenerem logicznym dla powiązanych zasobów.
  • Domyślne konto magazynu, które jest używane przez hosta usługi Functions do obsługi stanu i innych informacji o funkcjach.
  • Tożsamość zarządzana przypisana przez użytkownika, której host usługi Functions używa do nawiązywania połączenia z domyślnym kontem magazynu.
  • Aplikacja funkcji, która udostępnia środowisko do wykonywania kodu funkcji. Aplikacja funkcji odpowiada lokalnemu projektowi funkcji i umożliwia grupowanie funkcji jako jednostki logicznej w celu łatwiejszego zarządzania, wdrażania i udostępniania zasobów.

Użyj poleceń interfejsu wiersza polecenia platformy Azure w tych krokach, aby utworzyć wymagane zasoby.

  1. Jeśli jeszcze tego nie zrobiono, zaloguj się do platformy Azure:

    az login
    

    Polecenie az login powoduje zalogowanie cię do konta platformy Azure. Pomiń ten krok, jeśli korzystasz z Azure Cloud Shell.

  2. Jeśli jeszcze tego nie zrobiono, użyj tego az extension add polecenia, aby zainstalować rozszerzenie usługi Application Insights:

    az extension add --name application-insights
    
  3. Użyj tego polecenia az group create , aby utworzyć grupę zasobów o nazwie AzureFunctionsQuickstart-rg w wybranym regionie:

    az group create --name "AzureFunctionsQuickstart-rg" --location "<REGION>"
    

    W tym przykładzie zastąp <REGION> regionem w pobliżu, który obsługuje plan Flex Consumption. Użyj polecenia az functionapp list-flexconsumption-locations , aby wyświetlić listę aktualnie obsługiwanych regionów.

  4. Użyj polecenia az storage account create aby utworzyć ogólne konto magazynu w swojej grupie zasobów i regionie.

    az storage account create --name <STORAGE_NAME> --location "<REGION>" --resource-group "AzureFunctionsQuickstart-rg" \
    --sku "Standard_LRS" --allow-blob-public-access false --allow-shared-key-access false
    

    W tym przykładzie zastąp <STORAGE_NAME> nazwą, która jest odpowiednia dla ciebie i unikatowa w Azure Storage. Nazwy muszą zawierać od trzech do 24 znaków i tylko małe litery. Standard_LRS określa konto ogólnego przeznaczenia, które jest obsługiwane przez funkcje. Do tego nowego konta można uzyskać dostęp tylko przy użyciu tożsamości uwierzytelnionych przez firmę Microsoft, którym udzielono uprawnień do określonych zasobów.

  5. Użyj tego skryptu, aby utworzyć tożsamość zarządzaną przypisaną przez użytkownika, przeanalizować zwrócone właściwości JSON obiektu przy użyciu polecenia jqi udzielić Storage Blob Data Owner uprawnień na domyślnym koncie magazynu:

    output=$(az identity create --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" --location <REGION> \
    --query "{userId:id, principalId: principalId, clientId: clientId}" -o json)
    
    userId=$(echo $output | jq -r '.userId')
    principalId=$(echo $output | jq -r '.principalId')
    clientId=$(echo $output | jq -r '.clientId')
    
    storageId=$(az storage account show --resource-group "AzureFunctionsQuickstart-rg" --name <STORAGE_NAME> --query 'id' -o tsv)
    az role assignment create --assignee-object-id $principalId --assignee-principal-type ServicePrincipal \
    --role "Storage Blob Data Owner" --scope $storageId
    

    Jeśli nie masz narzędzia jq w lokalnej powłoce Bash, jest dostępne w Azure Cloud Shell. W tym przykładzie zamień <STORAGE_NAME> na nazwę domyślnego konta magazynu, a <REGION> na region.

    Polecenie az identity create tworzy tożsamość o nazwie func-host-storage-user. Zwrócony principalId element służy do przypisywania uprawnień do tej nowej tożsamości na domyślnym koncie magazynu przy użyciu polecenia az role assignment create. Polecenie az storage account show służy do uzyskania identyfikatora konta magazynu.

  6. Użyj tego polecenia az functionapp create , aby utworzyć aplikację funkcji na platformie Azure:

    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime dotnet-isolated --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime java --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime node --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime python --runtime-version <LANGUAGE_VERSION> --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    
    az functionapp create --resource-group "AzureFunctionsQuickstart-rg" --name <APP_NAME> --flexconsumption-location <REGION> \
    --runtime other --storage-account <STORAGE_NAME> \
    --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value "func-host-storage-user"
    

    W tym przykładzie zastąp te symbole zastępcze odpowiednimi wartościami:

    • <APP_NAME>: globalnie unikatowa nazwa odpowiednia dla Ciebie. <APP_NAME> jest również domyślną domeną DNS aplikacji funkcji.
    • <STORAGE_NAME>: nazwa konta użytego w poprzednim kroku.
    • <REGION>: bieżący region.
    • <LANGUAGE_VERSION>: użyj tej samej obsługiwanej wersji stosu języka, którą zweryfikowano lokalnie, o ile to możliwe.

    To polecenie tworzy aplikację funkcji działającą w określonym środowisku uruchomieniowym języka w systemie Linux w ramach planu Flex Consumption Plan, która jest bezpłatna dla naliczanej ilości użycia w tym miejscu. Polecenie tworzy również skojarzone wystąpienie usługi Azure Application Insights w tej samej grupie zasobów, które można używać do monitorowania wykonania aplikacji funkcji i przeglądania dzienników. Aby uzyskać więcej informacji, zobacz Monitorowanie usługi Azure Functions. Wystąpienie nie wiąże się z żadnymi kosztami do momentu jego aktywowania.

  7. Użyj tego skryptu, aby dodać zarządzaną tożsamość przypisaną przez użytkownika do roli Wydawca metryk monitorowania w instancji Application Insights.

    appInsights=$(az monitor app-insights component show --resource-group "AzureFunctionsQuickstart-rg" \
        --app <APP_NAME> --query "id" --output tsv)
    principalId=$(az identity show --name "func-host-storage-user" --resource-group "AzureFunctionsQuickstart-rg" \
        --query principalId -o tsv)
    az role assignment create --role "Monitoring Metrics Publisher" --assignee $principalId --scope $appInsights
    

    W tym przykładzie zastąp <APP_NAME> ciąg nazwą aplikacji funkcji. Polecenie az role assignment create dodaje użytkownika do roli. Identyfikator zasobu wystąpienia usługi Application Insights i identyfikator podmiotu zabezpieczeń użytkownika są uzyskiwane przy użyciu odpowiednio polecenia az monitor app-insights component show i az identity show.

Aktualizowanie ustawień aplikacji

Aby umożliwić hostowi usługi Functions nawiązywanie połączenia z domyślnym kontem magazynu przy użyciu udostępnionych sekretów, zastąp ustawienie parametrów połączenia AzureWebJobsStorage kilkoma ustawieniami, które mają prefiks AzureWebJobsStorage__. Te ustawienia określają zaawansowaną konfigurację używaną przez aplikację do łączenia się z magazynem i usługą Application Insights, korzystając z zarządzanej tożsamości przypisanej przez użytkownika.

  1. Użyj tego skryptu, aby uzyskać identyfikator klienta dla tożsamości zarządzanej przypisanej przez użytkownika i na jego podstawie zdefiniować połączenia tożsamości zarządzanej zarówno z przechowywaniem danych, jak i usługą Application Insights.

    clientId=$(az identity show --name func-host-storage-user \
        --resource-group AzureFunctionsQuickstart-rg --query 'clientId' -o tsv)
    az functionapp config appsettings set --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" \
        --settings AzureWebJobsStorage__accountName=<STORAGE_NAME> \
        AzureWebJobsStorage__credential=managedidentity AzureWebJobsStorage__clientId=$clientId \
        APPLICATIONINSIGHTS_AUTHENTICATION_STRING="ClientId=$clientId;Authorization=AAD"
    

    W tym skrypcie zastąp <APP_NAME> i <STORAGE_NAME> nazwami aplikacji funkcji oraz konta magazynowego odpowiednio.

  2. Uruchom polecenie az functionapp config appsettings delete , aby usunąć istniejące AzureWebJobsStorage ustawienie parametrów połączenia, które zawiera wspólny klucz tajny:

    az functionapp config appsettings delete --name <APP_NAME> --resource-group "AzureFunctionsQuickstart-rg" --setting-names AzureWebJobsStorage
    

    W tym przykładzie zastąp <APP_NAME> nazwami twojej aplikacji funkcji.

Na tym etapie host usługi Functions może bezpiecznie nawiązać połączenie z kontem magazynu przy użyciu zarządzanych tożsamości zamiast wspólnych sekretów. Teraz możesz wdrożyć kod projektu w zasobach platformy Azure.

Wdrażanie projektu funkcji na platformie Azure

Po pomyślnym utworzeniu aplikacji funkcji na platformie Azure możesz przystąpić do wdrażania projektu funkcji lokalnych przy użyciu func azure functionapp publish polecenia .

  1. W folderze głównym projektu uruchom następujące func azure functionapp publish polecenie:

    func azure functionapp publish <APP_NAME>
    

    W tym przykładzie zastąp <APP_NAME> nazwą twojej aplikacji. Pomyślne wdrożenie pokazuje wyniki podobne do następujących danych wyjściowych (obcięte dla uproszczenia):

     ...
    
     Getting site publishing info...
     Creating archive for current directory...
     Performing remote build for functions project.
    
     ...
    
     Deployment successful.
     Remote build succeeded!
     Syncing triggers...
     Functions in msdocs-azurefunctions-qs:
         HttpExample - [httpTrigger]
             Invoke url: https://msdocs-azurefunctions-qs.azurewebsites.net/api/httpexample
     
  2. W lokalnym terminalu lub wierszu polecenia uruchom to polecenie, aby uzyskać wartość punktu końcowego adresu URL, w tym klucz dostępu:

    func azure functionapp list-functions <APP_NAME> --show-keys
    

    W tym przykładzie ponownie zastąp <APP_NAME> nazwą Twojej aplikacji.

  3. Skopiuj zwrócony adres URL punktu końcowego i klucz, którego użyjesz do wywołania punktu końcowego funkcji.

Aktualizowanie pliku pom.xml

Po pomyślnym utworzeniu aplikacji funkcji na platformie Azure zaktualizuj plik pom.xml, aby narzędzie Maven można było wdrożyć w nowej aplikacji. W przeciwnym razie program Maven tworzy nowy zestaw zasobów platformy Azure podczas wdrażania.

  1. W usłudze Azure Cloud Shell użyj tego az functionapp show polecenia, aby uzyskać adres URL i identyfikator kontenera wdrożenia nowej tożsamości zarządzanej przypisanej przez użytkownika:

    az functionapp show --name <APP_NAME> --resource-group AzureFunctionsQuickstart-rg  \
        --query "{userAssignedIdentityResourceId: properties.functionAppConfig.deployment.storage.authentication.userAssignedIdentityResourceId, \
        containerUrl: properties.functionAppConfig.deployment.storage.value}"
    

    W tym przykładzie zastąp <APP_NAME> nazwami twojej aplikacji funkcji.

  2. W katalogu głównym projektu otwórz plik pom.xml w edytorze tekstów, znajdź properties element i zaktualizuj następujące wartości właściwości:

    Nazwa właściwości Value
    java.version Użyj tej samej obsługiwanej wersji stosu języka zweryfikowanego lokalnie, takiej jak 17.
    azure.functions.maven.plugin.version 1.37.1
    azure.functions.java.library.version 3.1.0
    functionAppName Nazwa aplikacji funkcji na platformie Azure.
  3. Znajdź sekcję configuration pliku azure-functions-maven-plugin i zastąp ją następującym fragmentem XML:

    <configuration>
        <appName>${functionAppName}</appName>
        <resourceGroup>AzureFunctionsQuickstart-rg</resourceGroup>
        <pricingTier>Flex Consumption</pricingTier>
        <region>....</region>
        <runtime>
            <os>linux</os>
            <javaVersion>${java.version}</javaVersion>
        </runtime>
        <deploymentStorageAccount>...</deploymentStorageAccount>
        <deploymentStorageResourceGroup>AzureFunctionsQuickstart-rg</deploymentStorageResourceGroup>
        <deploymentStorageContainer>...</deploymentStorageContainer>
        <storageAuthenticationMethod>UserAssignedIdentity</storageAuthenticationMethod>
        <userAssignedIdentityResourceId>...</userAssignedIdentityResourceId>
        <appSettings>
            <property>
                <name>FUNCTIONS_EXTENSION_VERSION</name>
                <value>~4</value>
            </property>
        </appSettings>
    </configuration>
    
  4. W nowym elemencie configuration wprowadź te konkretne zamiany wartości wielokropków (...):

    Configuration Value
    region Kod regionu istniejącej aplikacji funkcji, taki jak eastus.
    deploymentStorageAccount Nazwa konta magazynowego.
    deploymentStorageContainer Nazwa udziału wdrożenia, która znajduje się po \ w wartości containerUrl, którą uzyskałeś.
    userAssignedIdentityResourceId W pełni kwalifikowany identyfikator zasobu tożsamości zarządzanej, który został uzyskany.
  5. Zapisz zmiany w pliku pom.xml .

Teraz możesz użyć narzędzia Maven, aby wdrożyć projekt kodu w istniejącej aplikacji.

Wdrażanie projektu funkcji na platformie Azure

  1. W wierszu polecenia uruchom następujące polecenie:

    mvn clean package azure-functions:deploy
    
  2. Po pomyślnym wdrożeniu uruchom polecenie Core Tools, aby uzyskać wartość punktu końcowego URL, w tym klucz dostępu:

    func azure functionapp list-functions <APP_NAME> --show-keys
    

    W tym przykładzie ponownie zastąp <APP_NAME> nazwą Twojej aplikacji.

  3. Skopiuj zwrócony adres URL punktu końcowego i klucz, którego użyjesz do wywołania punktu końcowego funkcji.

Wywoływanie funkcji na platformie Azure

Ponieważ funkcja używa wyzwalacza HTTP i obsługuje żądania GET, wywołuje je, wysyłając żądanie HTTP do adresu URL przy użyciu klucza dostępu na poziomie funkcji. Najłatwiej jest wykonać żądanie GET w przeglądarce.

Wklej adres URL i klucz dostępu skopiowany na pasek adresu przeglądarki.

Adres URL punktu końcowego powinien wyglądać mniej więcej tak:

https://contoso-app.azurewebsites.net/api/httpexample?code=aabbccdd...

W takim przypadku należy również podać klucz dostępu w ciągu zapytania podczas wysyłania żądania GET do adresu URL punktu końcowego. Użycie klucza dostępu jest zalecane w celu ograniczenia dostępu od klientów losowych. Podczas wykonywania żądania POST przy użyciu klienta HTTP należy zamiast tego podać klucz dostępu w nagłówku x-functions-key .

Po przejściu do tego adresu URL przeglądarka powinna wyświetlić podobne dane wyjściowe, jak po uruchomieniu funkcji lokalnie.

Uprzątnij zasoby

Jeśli przejdziesz do następnego kroku i dodasz powiązanie wyjściowe kolejki usługi Azure Storage, zachowaj wszystkie zasoby na miejscu, ponieważ będziesz rozwijać to, co już zrobiłeś.

W przeciwnym razie użyj następującego polecenia, aby usunąć grupę zasobów i wszystkie zawarte w niej zasoby, aby uniknąć ponoszenia dalszych kosztów.

az group delete --name AzureFunctionsQuickstart-rg

Dalsze kroki