Zelfstudie: Op identiteit gebaseerde verbindingen gebruiken in plaats van geheimen met triggers en bindingen

In deze zelfstudie ziet u hoe u Azure Functions configureert om verbinding te maken met Azure Service Bus wachtrijen met behulp van beheerde identiteiten in plaats van geheimen die zijn opgeslagen in de instellingen van de functie-app. De zelfstudie is een vervolg op de zelfstudie Een functie-app zonder standaardopslaggeheimen maken in de definitiezelfstudie . Zie Een op identiteit gebaseerde verbinding configureren voor meer informatie over op identiteit gebaseerde verbindingen.

Hoewel de weergegeven procedures over het algemeen voor alle talen werken, ondersteunt deze zelfstudie momenteel C#-klassenbibliotheekfuncties specifiek in Windows.

In deze zelfstudie leert u het volgende:

  • Maak een Service Bus-naamruimte en -wachtrij.
  • Uw functie-app configureren met een beheerde identiteit
  • Een roltoewijzing maken die die identiteit toestemming geeft om te lezen uit de Service Bus-wachtrij
  • Een functie-app maken en implementeren met een Service Bus-trigger.
  • Uw op identiteit gebaseerde verbinding met Service Bus controleren

Vereiste

Voltooi de vorige zelfstudie: Een functie-app maken met op identiteit gebaseerde verbindingen.

Een servicebus en wachtrij maken

  1. Kies een resource maken (+) in de Azure Portal.

  2. Selecteer op de pagina Een resource makende optie Integration>Service Bus.

  3. Gebruik op de pagina Basisinformatie de volgende tabel om de instellingen van de Service Bus-naamruimte te configureren. Gebruik de standaardwaarden voor de resterende opties.

    Optie Voorgestelde waarde Beschrijving
    Abonnement Uw abonnement Het abonnement waarmee deze nieuwe resources zijn gemaakt.
    Resourcegroep myResourceGroup De resourcegroep die u hebt gemaakt met uw functie-app.
    Naam van naamruimte Wereldwijd unieke naam De naamruimte van uw exemplaar van waaruit uw functie moet worden geactiveerd. Omdat de naamruimte openbaar toegankelijk is, moet u een naam gebruiken die wereldwijd uniek is in Azure. De naam moet ook tussen de 6 en 50 tekens lang zijn, alleen alfanumerieke tekens en streepjes bevatten en mag niet beginnen met een getal.
    Locatie myFunctionRegion De regio waar u uw functie-app hebt gemaakt.
    Prijscategorie Basic De Service Bus-basislaag.
  4. Selecteer Controleren + maken. Nadat de validatie is voltooid, selecteert u Maken.

  5. Nadat de implementatie is voltooid, selecteert u Ga naar resource.

  6. Selecteer + Wachtrij in uw nieuwe Service Bus-naamruimte om een wachtrij toe te voegen.

  7. Typ myinputqueue als de naam van de nieuwe wachtrij en selecteer Maken.

Nu u een wachtrij hebt, voegt u een roltoewijzing toe aan de beheerde identiteit van uw functie-app.

Uw Service Bus-trigger configureren met een beheerde identiteit

Als u Service Bus-triggers wilt gebruiken met op identiteit gebaseerde verbindingen, moet u de roltoewijzing Azure Service Bus Gegevensontvanger toevoegen aan de beheerde identiteit in uw functie-app. Deze rol is vereist wanneer u beheerde identiteiten gebruikt om uw Service Bus-naamruimte te activeren. U kunt ook uw eigen account toevoegen aan deze rol, zodat u tijdens lokale tests verbinding kunt maken met de Service Bus-naamruimte.

Notitie

Rolvereisten voor het gebruik van op identiteit gebaseerde verbindingen variƫren, afhankelijk van de service en hoe u hiermee verbinding maakt. De behoeften variƫren tussen triggers, invoerbindingen en uitvoerbindingen. Raadpleeg de trigger- en bindingsdocumentatie voor de service voor meer informatie over specifieke rolvereisten.

  1. Selecteer Access Control (IAM) in de Service Bus-naamruimte die u zojuist hebt gemaakt. Hier kunt u zien en configureren wie toegang heeft tot de resource.

  2. Klik op Toevoegen en selecteer Roltoewijzing toevoegen.

  3. Zoek Azure Service Bus Gegevensontvanger, selecteer deze en klik op Volgende.

  4. Kies op het tabblad Leden onder Toegang toewijzen aan de optie Beheerde identiteit

  5. Klik op Leden selecteren om het deelvenster Beheerde identiteiten selecteren te openen.

  6. Controleer of het abonnement het abonnement is waarin u de resources eerder hebt gemaakt.

  7. Kies in de selector Beheerde identiteitde optie Functie-app in de categorie Door het systeem toegewezen beheerde identiteit . Het label 'Functie-app' kan ernaast een getal tussen haakjes hebben, waarmee het aantal apps in het abonnement met door het systeem toegewezen identiteiten wordt aangegeven.

  8. Uw app moet worden weergegeven in een lijst onder de invoervelden. Als u deze niet ziet, kunt u het selectievakje Selecteren gebruiken om de resultaten te filteren op de naam van uw app.

  9. Klik op uw toepassing. Deze moet omlaag worden verplaatst naar de sectie Geselecteerde leden . Klik op Selecteren.

  10. Klik in het scherm Roltoewijzing toevoegen op Controleren en toewijzen. Controleer de configuratie en klik vervolgens op Controleren en toewijzen.

U hebt uw functie-app toegang verleend tot de Service Bus-naamruimte met behulp van beheerde identiteiten.

Verbinding maken met Service Bus in uw functie-app

  1. Zoek in de portal naar de functie-app die u in de vorige zelfstudie hebt gemaakt of blader ernaar op de pagina Functie-app .

  2. Selecteer configuratie onder Instellingen in uw functie-app.

  3. Selecteer in Toepassingsinstellingende optie + Nieuwe toepassingsinstelling om de nieuwe instelling in de volgende tabel te maken.

    Naam Waarde Beschrijving
    ServiceBusConnection__fullyQualifiedNamespace <>SERVICE_BUS_NAMESPACE.servicebus.windows.net Met deze instelling wordt uw functie-app verbonden met de Service Bus via een op identiteit gebaseerde verbinding in plaats van geheimen.
  4. Nadat u de twee instellingen hebt gemaakt, selecteert u Opslaan>bevestigen.

Notitie

Wanneer u Azure App Configuration of Key Vault gebruikt om instellingen voor beheerde identiteit-verbindingen op te geven, moeten instellingsnamen een geldig sleutelscheidingsteken gebruiken, zoals : of / in plaats van de__, om ervoor te zorgen dat namen correct worden omgezet.

Bijvoorbeeld ServiceBusConnection:fullyQualifiedNamespace.

Nu u de functie-app hebt voorbereid om verbinding te maken met de Service Bus-naamruimte met behulp van een beheerde identiteit, kunt u een nieuwe functie die gebruikmaakt van een Service Bus-trigger toevoegen aan uw lokale project.

Een door Service Bus geactiveerde functie toevoegen

  1. Voer de opdracht func init als volgt uit om een functieproject te maken in een map met de naam LocalFunctionProj met de opgegeven runtime:

    func init LocalFunctionProj --dotnet
    
  2. Navigeer naar de projectmap:

    cd LocalFunctionProj
    
  3. Voer in de hoofdmap van het project de volgende opdrachten uit:

    dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 5.2.0
    

    Hiermee vervangt u de standaardversie van het Service Bus-extensiepakket door een versie die ondersteuning biedt voor beheerde identiteiten.

  4. Voer de volgende opdracht uit om een door Service Bus geactiveerde functie toe te voegen aan het project:

    func new --name ServiceBusTrigger --template ServiceBusQueueTrigger 
    

    Hiermee wordt de code voor een nieuwe Service Bus-trigger en een verwijzing naar het extensiepakket toegevoegd. U moet een verbindingsinstelling voor de Service Bus-naamruimte toevoegen voor deze trigger.

  5. Open het nieuwe projectbestand ServiceBusTrigger.cs en vervang de ServiceBusTrigger klasse door de volgende code:

    public static class ServiceBusTrigger
    {
        [FunctionName("ServiceBusTrigger")]
        public static void Run([ServiceBusTrigger("myinputqueue", 
            Connection = "ServiceBusConnection")]string myQueueItem, ILogger log)
        {
            log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
        }
    }
    

    Met dit codevoorbeeld wordt de naam van de wachtrij bijgewerkt naar myinputqueue. Dit is dezelfde naam als de wachtrij die u eerder hebt gemaakt. Ook wordt de naam van de Service Bus-verbinding ingesteld op ServiceBusConnection. Dit is de Service Bus-naamruimte die wordt gebruikt door de op identiteit gebaseerde verbinding ServiceBusConnection__fullyQualifiedNamespace die u in de portal hebt geconfigureerd.

Notitie

Als u nu probeert uw functies uit te voeren met behulp van func start , krijgt u een foutmelding. Dit komt omdat u geen lokale verbinding op basis van identiteit hebt gedefinieerd. Als u uw functie lokaal wilt uitvoeren, stelt u de app-instelling ServiceBusConnection__fullyQualifiedNamespace in in local.settings.json zoals u in de vorige sectie hebt gedaan. Daarnaast moet u de rol toewijzen aan uw ontwikkelaarsidentiteit. Raadpleeg de documentatie over lokale ontwikkeling met op identiteit gebaseerde verbindingen voor meer informatie.

Notitie

Wanneer u Azure App Configuration of Key Vault gebruikt om instellingen op te geven voor beheerde identiteit-verbindingen, moeten instellingsnamen een geldig sleutelscheidingsteken gebruiken, zoals : of / in plaats van de __ om ervoor te zorgen dat namen correct worden omgezet.

Bijvoorbeeld ServiceBusConnection:fullyQualifiedNamespace.

Het bijgewerkte project publiceren

  1. Voer de volgende opdracht uit om de bestanden die nodig zijn voor het implementatiepakket lokaal te genereren:

    dotnet publish --configuration Release
    
  2. Blader naar de \bin\Release\netcoreapp3.1\publish submap en maak een .zip-bestand van de inhoud.

  3. Publiceer het .zip-bestand door de volgende opdracht uit te voeren, waarbij u de FUNCTION_APP_NAMEparameters , RESOURCE_GROUP_NAMEen PATH_TO_ZIP indien van toepassing vervangt:

    az functionapp deploy -n FUNCTION_APP_NAME -g RESOURCE_GROUP_NAME --src-path PATH_TO_ZIP
    

Nu u de functie-app hebt bijgewerkt met de nieuwe trigger, kunt u controleren of deze werkt met behulp van de identiteit.

Uw wijzigingen valideren

  1. Zoek Application Insights en selecteer Application Insights onder Services in de portal.

  2. Blader of zoek in Application Insights naar uw benoemde exemplaar.

  3. Selecteer live metrische gegevens onder Onderzoeken in uw exemplaar.

  4. Houd het vorige tabblad geopend en open de Azure Portal op een nieuw tabblad. Ga op het nieuwe tabblad naar uw Service Bus-naamruimte en selecteer Wachtrijen op de linkerblade.

  5. Selecteer de wachtrij met de naam myinputqueue.

  6. Selecteer Service Bus Explorer op de linkerblade.

  7. Een testbericht verzenden.

  8. Selecteer het geopende tabblad Live Metrics en bekijk de uitvoering van de Service Bus-wachtrij.

Gefeliciteerd U hebt de Service Bus-wachtrijtrigger ingesteld met een beheerde identiteit.

Resources opschonen

In de voorgaande stappen hebt u Azure-resources in een resourcegroep gemaakt. Als u deze resources in de toekomst waarschijnlijk niet nodig hebt, kunt u ze verwijderen door de resourcegroep te verwijderen.

Selecteer Resourcegroepen in het menu of op de beginpagina van de Azure-portal. Selecteer myResourceGroup op de pagina Resourcegroepen.

Controleer op de pagina myResourceGroup of de weergegeven resources de resources zijn die u wilt verwijderen.

Selecteer Resourcegroep verwijderen, typ myResourceGroup in het tekstvak om dit te bevestigen en selecteer Verwijderen.

Volgende stappen

In deze zelfstudie hebt u een functie-app gemaakt met op identiteit gebaseerde verbindingen.

Gebruik de volgende koppelingen voor meer informatie Azure Functions met op identiteit gebaseerde verbindingen: