Teilen über


Verwenden von Azure-Funktionen in Azure-Container-Apps

In diesem Artikel wird erläutert, wie Sie eine Azure Functions-App in Azure-Container-Apps erstellen, die mit vorkonfigurierten automatischen Skalierungsregeln abgeschlossen ist.

Voraussetzungen

Ressource BESCHREIBUNG
Azure-Konto Ein Azure-Konto mit einem aktiven Abonnement.

Falls Sie keins haben, können Sie kostenlos eins erstellen.
Azure Storage-Konto Ein BLOB-Speicherkonto zum Speichern des Zustands für Ihre Azure-Funktionen.
Azure Application Insights Eine Instanz von Azure Application Insights zum Sammeln von Daten über Ihre Container-App.

Erstellen einer Functions-App

Die folgenden Schritte zeigen, wie Sie ein Beispielcontainerimage verwenden, um Ihre Container-App zu erstellen. Wenn Sie dieses Verfahren mit einem benutzerdefinierten Containerimage verwenden möchten, lesen Sie " Erstellen Ihrer ersten Funktions-App in Azure-Container-Apps".

  1. Wechseln Sie zum Azure-Portal, und suchen Sie in der Suchleiste nach Container-Apps .

  2. Wählen Sie Azure Container Apps aus.

  3. Wählen Sie "Erstellen" aus.

  4. Container-App auswählen

  5. Geben Sie im Abschnitt "Grundlagen" die folgenden Werte ein.

    Unter Projektdetails:

    Eigentum Wert
    Abonnement Wählen Sie Ihr Azure-Abonnement.
    Ressourcengruppe Wählen Sie "Neue Ressourcengruppe erstellen", nennen Sie sie "my-aca-functions-group", und wählen Sie "OK" aus.
    Name der Container-App Geben Sie "my-aca-functions-app" ein.
  6. Aktivieren Sie das Kontrollkästchen neben Für Azure Functions optimieren.

    Screenshot: Azure-Portal beim Erstellen einer für Azure Functions vorkonfigurierten Container-App

  7. Geben Sie unter Container Apps-Umgebung Folgendes ein:

    Eigentum Wert
    Region Wählen Sie die Region aus, die Ihnen am nächsten ist.
    Container Apps-Umgebung Wählen Sie " Neue Umgebung erstellen" aus.
  8. Geben Sie im Umgebungseinrichtungsfenster Folgendes ein:

    Eigentum Wert
    Umgebungsname Geben Sie "my-aca-functions-environment" ein.
    Zonenredundanz Wählen Sie Deaktiviert aus.
  9. Wählen Sie "Erstellen" aus, um Ihre Werte zu speichern.

  10. Wählen Sie "Weiter" aus: Container , um zum Abschnitt "Container " zu wechseln.

  11. Lassen Sie dieses Kontrollkästchen neben " Schnellstartbild verwenden" deaktiviert.

  12. Geben Sie im Abschnitt "Containerdetails " die folgenden Werte ein.

    Eigentum Wert
    Name Dieses Feld wird mit Ihrer Auswahl im letzten Abschnitt ausgefüllt.
    Bildquelle Wählen Sie Docker Hub oder andere Registrierungen aus
    Abonnement Wählen Sie Ihr Abonnement aus.
    Imagetyp Wählen Sie Öffentlich aus.
    Anmeldeserver für die Registrierung Mcr.microsoft.com eingeben
    Image und Tag k8se/quickstart-functions:latest eingeben
  13. Geben Sie unter Umgebungsvariablen Werte für die folgenden Variablen ein:

    • AzureWebJobsStorage
    • APPINSIGHTS_INSTRUMENTATIONKEY oder APPLICATIONINSIGHTS_CONNECTION_STRING

    Geben Sie entweder verwaltete Identitäts- oder Verbindungszeichenfolgenwerte für diese Variablen ein. Verwaltete Identität wird empfohlen.

    Die AzureWebJobsStorage Variable ist eine erforderliche Azure Storage-Kontoverbindungszeichenfolge für Azure Functions. Dieses Speicherkonto speichert Funktionsausführungsprotokolle, verwaltet Trigger und Bindungen und verwaltet den Zustand für dauerhafte Funktionen.

    Application Insights ist ein Überwachungs- und Diagnosedienst, der Einblicke in die Leistung und Nutzung Ihrer Azure-Funktionen bietet. Diese Überwachung hilft Ihnen, Anforderungsraten, Reaktionszeiten, Fehlerraten und andere Metriken nachzuverfolgen.

  14. Wählen Sie "Nächster Ingress" > aus, um zum Abschnitt "Ingress" zu wechseln, und geben Sie die folgenden Werte ein.

    Eigentum Wert
    Eingang Aktivieren Sie das Kontrollkästchen "Aktiviert ", um den Eingangseingang zu aktivieren.
    Eingehender Datenverkehr Wählen Sie "Datenverkehr von überall annehmen" aus.
    Eingangstyp Wählen Sie HTTP aus.
    Zielport Geben Sie 80 ein.
  15. Wählen Sie Überprüfen + Erstellen aus.

  16. Wählen Sie "Erstellen" aus.

  17. Klicken Sie nach Abschluss der Bereitstellung auf Zu Ressource wechseln.

  18. Wählen Sie auf der Seite "Übersicht " den Link neben der Anwendungs-URL aus, um die Anwendung auf einer neuen Browserregisterkarte zu öffnen.

  19. Fügen Sie an das Ende der URL an /api/HttpExample .

    Eine Meldung, dass die HTTP-Triggerfunktion eine Anforderung verarbeitet hat, wird im Browser zurückgegeben.

Voraussetzungen

Erstellen einer Funktionen-App

Um sich ausgehend von der CLI bei Azure anzumelden, führen Sie den folgenden Befehl aus und befolgen Sie die Anweisungen, um den Authentifizierungsprozess abzuschließen.

  1. Melden Sie sich bei Azure an.

    az login
    
  2. Verwenden Sie den Upgradebefehl, um sicherzustellen, dass Sie die neueste Version der CLI ausführen.

    az upgrade
    
  3. Installieren oder aktualisieren Sie die Azure Container Apps-Erweiterung für die CLI.

    Falls Fehler zu fehlenden Parametern auftreten, wenn Sie az containerapp-Befehle in der Azure CLI oder in Cmdlets aus dem Az.App-Modul in PowerShell ausführen, stellen Sie sicher, dass die aktuelle Version der Azure Container Apps-Erweiterung installiert ist.

    az extension add --name containerapp --allow-preview true --upgrade
    
    
    

    Nachdem die aktuelle Erweiterung oder das aktuelle Modul installiert ist, registrieren Sie nun die Namespaces Microsoft.App und Microsoft.OperationalInsights.

    az provider register --namespace Microsoft.App
    
    az provider register --namespace Microsoft.OperationalInsights
    
  4. Erstellen Sie Umgebungsvariablen.

    RESOURCE_GROUP_NAME="my-aca-functions-group"
    CONTAINER_APP_NAME="my-aca-functions-app"
    ENVIRONMENT_NAME="my-aca-functions-environment"
    LOCATION="westus"
    STORAGE_ACCOUNT_NAME="storage-account-name"
    STORAGE_ACCOUNT_SKU="storage-account-sku"
    APPLICATION_INSIGHTS_NAME="application-insights-name"
    
  5. Erstellen Sie eine Ressourcengruppe.

    az group create \
      --name $RESOURCE_GROUP_NAME \
      --location $LOCATION \
      --output none
    
  6. Erstellen Sie die Container Apps-Umgebung.

    az containerapp env create \
        --name $ENVIRONMENT_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --location $LOCATION \
        --output none
    
  7. Erstellen des Speicherkontos

    az storage account create \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --location $LOCATION \
      --sku $STORAGE_ACCOUNT_SKU
    
  8. Speicherkontoverbindungszeichenfolge abrufen

    $STORAGE_ACCOUNT_CONNECTION_STRING = az storage account show-connection-string \
      --name $STORAGE_ACCOUNT_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  9. Erstellen von Azure Application Insights

    az monitor app-insights component create \
    --app $APPLICATION_INSIGHTS_NAME \
    --location $LOCATION \
      --resource-group $RESOURCE_GROUP \
      --application-type web
    
  10. Verbindungszeichenfolge für Application Insights abrufen

    $APPLICATION_INSIGHTS_CONNECTION_STRING = az monitor app-insights component show \
      --app $APPLICATION_INSIGHTS_NAME \
      --resource-group $RESOURCE_GROUP \
      --query connectionString \
      --output tsv
    
  11. Erstellen Sie eine Azure Functions-Container-App.

    az containerapp create \
      --resource-group $RESOURCE_GROUP_NAME \
      --name $CONTAINER_APP_NAME \
      --environment $ENVIRONMENT_NAME \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0 \
      --ingress external \
      --target-port 80 \
      --kind functionapp \
      --query properties.outputs.fqdn
    

    Dieser Befehl gibt die URL Ihrer Funktionen-App zurück. Kopieren Sie diese URL, und fügen Sie sie in einen Webbrowser ein.

  12. Erstellen einer Azure Functions-Container-App mit --revisions-mode multiple für ein Multi-Revisionen-Szenario

    az containerapp create \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --environment $CONTAINERAPPS_ENVIRONMENT \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0 \
      --target-port 80 \
      --ingress external \
      --kind functionapp \
      --workload-profile-name $WORKLOAD_PROFILE_NAME \
      --env-vars AzureWebJobsStorage="$STORAGE_ACCOUNT_CONNECTION_STRING" APPLICATIONINSIGHTS_CONNECTION_STRING="$APPLICATION_INSIGHTS_CONNECTION_STRING"
    
  13. Aktualisieren Sie für das Szenario "Multirevision" die Containerapp und teilen Sie den Datenverkehr.

    az containerapp update \
      --resource-group $RESOURCE_GROUP \
      --name $CONTAINERAPP_NAME \
      --image mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:latest
    
    az containerapp ingress traffic set -resource-group \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --revision-weight {revision1_name}=50 \
      --revision-weight {revision2_name}=50
    
  14. Fügen Sie an das Ende der URL an /api/HttpExample .

    Eine Meldung, dass die HTTP-Triggerfunktion eine Anforderung verarbeitet hat, wird im Browser zurückgegeben.

Verwalten von Funktionen

Sie können Ihre bereitgestellten Funktionen in Azure Container-Apps mithilfe der Azure CLI verwalten. Mit den folgenden Befehlen können Sie die in Ihrer containerisierten Umgebung ausgeführten Funktionen auflisten, prüfen und mit ihnen interagieren.

Hinweis

Beim Umgang mit Multirevisionsszenarien fügen Sie den --revision <REVISION_NAME> Parameter zu Ihrem Befehl hinzu, um eine bestimmte Revision zu erreichen.

Listenfunktionen

Alle in Ihrer Container-App bereitgestellten Funktionen anzeigen:

# List all functions
az containerapp function list \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME

Funktionsdetails anzeigen

Erhalten Sie detaillierte Informationen zu einer bestimmten Funktion:

az containerapp function show \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --function-name <FUNCTIONS_APP_NAME>

Überwachen von Funktionsaufrufen

Die Überwachung Ihrer Funktions-App ist für das Verständnis der Leistung und Diagnose von Problemen unerlässlich. Die folgenden Befehle zeigen, wie Funktions-URLs abgerufen, Aufrufe ausgelöst und detaillierte Telemetrie- und Aufrufzusammenfassungen mithilfe der Azure CLI angezeigt werden. Stellen Sie sicher, dass Sie die Funktion einige Male mit curl -X POST "fqdn/api/HttpExample" aufrufen, bevor Sie die Traces aufrufen

  1. Um Ablaufverfolgungen anzuzeigen, erfassen Sie detaillierte Ablaufverfolgungen für Funktionsaufrufe.

    az containerapp function invocations traces \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --function-name <FUNCTIONS_APP_NAME> \
      --timespan 5h \
      --limit 3
    
  2. Zeigen Sie eine Aufrufzusammenfassung an, um erfolgreiche und fehlgeschlagene Aufrufe zu überprüfen.

    az containerapp function invocations summary \
      --name $CONTAINERAPP_NAME \
      --resource-group $RESOURCE_GROUP \
      --function-name <FUNCTIONS_APP_NAME> \
      --timespan 5h
    

Verwalten von Funktionsschlüsseln

Azure Functions verwendet Schlüssel für Authentifizierung und Autorisierung. Sie können die folgenden verschiedenen Schlüsseltypen verwalten:

  • Hostschlüssel: Zugreifen auf eine beliebige Funktion in der App
  • Hauptschlüssel: Bereitstellen des administrativen Zugriffs
  • Systemschlüssel: Von Azure-Diensten verwendet
  • Funktionstasten: Zugreifen auf bestimmte Funktionen

Die folgenden Befehle zeigen, wie Sie Schlüssel für den Host verwalten. Um denselben Befehl für eine bestimmte Funktionen-App auszuführen, fügen Sie dem Befehl den --function-name <FUNCTIONS_APP_NAME> Parameter hinzu.

Auflisten von Schlüsseln

Verwenden Sie die folgenden Befehle, um host- und funktionsspezifische Schlüssel für Ihre Azure-Funktionen auflisten, die in Container-Apps ausgeführt werden.

Hinweis

Stellen Sie sicher, dass mindestens ein Replikat läuft, damit die folgenden Schlüsselverwaltungsbefehle funktionieren.

az containerapp function keys list \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --key-type hostKey

Anzeigen eines bestimmten Schlüssels

Zeigen Sie den Wert eines bestimmten Schlüssels auf Hostebene für Ihre Funktions-App mit dem folgenden Befehl an:

az containerapp function keys show \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --key-name <KEY_NAME> \
  --key-type hostKey

Festlegen eines Schlüssels

Legen Sie einen bestimmten Schlüssel auf Hostebene für Ihre Funktions-App mit dem folgenden Befehl fest:

az containerapp function keys set \
  --resource-group $RESOURCE_GROUP \
  --name $CONTAINERAPP_NAME \
  --key-name <KEY_NAME> \
  --key-value <KEY_VALUE> \
  --key-type hostKey