Självstudie: Använda identitetsbaserade anslutningar i stället för hemligheter med utlösare och bindningar
Den här självstudien visar hur du konfigurerar Azure Functions för att ansluta till Azure Service Bus-köer med hjälp av hanterade identiteter i stället för hemligheter som lagras i inställningarna för funktionsappen. Självstudien är en fortsättning på självstudiekursen Skapa en funktionsapp utan standardlagringshemligheter . Mer information om identitetsbaserade anslutningar finns i Konfigurera en identitetsbaserad anslutning..
De procedurer som visas fungerar vanligtvis för alla språk, men den här självstudien stöder för närvarande C#-klassbiblioteksfunktioner i Windows specifikt.
I den här självstudien lär du dig att:
- Skapa ett namnområde och en kö för Service Bus.
- Konfigurera funktionsappen med en hanterad identitet.
- Skapa en rolltilldelning som ger identiteten behörighet att läsa från Service Bus-kön.
- Skapa och distribuera en funktionsapp med en Service Bus-utlösare.
- Verifiera din identitetsbaserade anslutning till Service Bus.
Förutsättningar
Slutför föregående självstudie: Skapa en funktionsapp med identitetsbaserade anslutningar.
Skapa ett Service Bus-namnområde och en kö
På sidan Skapa en resurs söker du efter och väljer Service Bus och väljer sedan Skapa.
På sidan Grundläggande använder du följande tabell för att konfigurera Service Bus-namnområdesinställningarna . Använd standardvärdena för de återstående alternativen.
Alternativ Föreslaget värde beskrivning Abonnemang Din prenumeration Prenumerationen under vilken dina resurser skapas. Resursgrupp myResourceGroup Den resursgrupp som du skapade med funktionsappen. Namn på namnrymd Globalt unikt namn Namnområdet för din instans som funktionen ska utlösas från. Eftersom namnområdet är offentligt tillgängligt måste du använda ett namn som är globalt unikt i Hela Azure. Namnet måste också vara mellan 6 och 50 tecken långt, innehålla endast alfanumeriska tecken och bindestreck och kan inte börja med ett tal. Plats myFunctionRegion Den region där du skapade funktionsappen. Prisnivå Grundläggande Den grundläggande Service Bus-nivån. Välj Granska + skapa. När valideringen är klar väljer du Skapa.
När distributionen är klar väljer du Gå till resurs.
I det nya Service Bus-namnområdet väljer du + Kö för att lägga till en kö.
Ange myinputqueue som den nya köns namn och välj Skapa.
Nu när du har en kö kan du lägga till en rolltilldelning till funktionsappens hanterade identitet.
Konfigurera Din Service Bus-utlösare med en hanterad identitet
Om du vill använda Service Bus-utlösare med identitetsbaserade anslutningar måste du lägga till rolltilldelningen för Azure Service Bus-datamottagare till den hanterade identiteten i funktionsappen. Den här rollen krävs när du använder hanterade identiteter för att utlösa ditt Service Bus-namnområde. Du kan också lägga till ditt eget konto i den här rollen, vilket gör det möjligt att ansluta till Service Bus-namnområdet under lokal testning.
Kommentar
Rollkraven för att använda identitetsbaserade anslutningar varierar beroende på tjänsten och hur du ansluter till den. Behoven varierar mellan utlösare, indatabindningar och utdatabindningar. Mer information om specifika rollkrav finns i dokumentationen för utlösare och bindning för tjänsten.
I ditt Service Bus-namnområde som du skapade väljer du Åtkomstkontroll (IAM). På den här sidan kan du visa och konfigurera vem som har åtkomst till resursen.
Välj + Lägg till och välj Lägg till rolltilldelning.
Sök efter Azure Service Bus Data Receiver, välj den och välj sedan Nästa.
På fliken Medlemmar går du till Tilldela åtkomst till och väljer Hanterad identitet
Välj Välj medlemmar för att öppna panelen Välj hanterade identiteter .
Bekräfta att prenumerationen är den som du skapade resurserna i tidigare.
I väljaren Hanterad identitet väljer du Funktionsapp i kategorin Systemtilldelad hanterad identitet. Etiketten Funktionsapp kan ha ett tal inom parenteser bredvid sig, vilket anger antalet appar i prenumerationen med systemtilldelade identiteter.
Appen bör visas i en lista under indatafälten. Om du inte ser det kan du använda rutan Välj för att filtrera resultatet med appens namn.
Välj ditt program. Den bör flyttas ned till avsnittet Valda medlemmar . Välj Välj.
På skärmen Lägg till rolltilldelning väljer du Granska + tilldela. Granska konfigurationen och välj sedan Granska + tilldela.
Du har gett funktionsappen åtkomst till Service Bus-namnområdet med hjälp av hanterade identiteter.
Ansluta till Service Bus i funktionsappen
I portalen söker du efter funktionsappen som du skapade i föregående självstudie eller bläddrar till den på sidan Funktionsapp .
I funktionsappen expanderar du Inställningar och väljer sedan Miljövariabler.
På fliken Appinställningar väljer du + Lägg till för att skapa en inställning. Använd informationen i följande tabell för att ange Namn och Värde för den nya inställningen:
Name Värde beskrivning ServiceBusConnection__fullyQualifiedNamespace <>SERVICE_BUS_NAMESPACE.servicebus.windows.net Den här inställningen ansluter din funktionsapp till Service Bus med hjälp av en identitetsbaserad anslutning i stället för hemligheter. Välj Använd och välj sedan Använd och bekräfta för att spara ändringarna och starta om appfunktionen.
Kommentar
När du använder Azure App Configuration eller Key Vault för att ange inställningar för hanterade identitetsanslutningar bör inställningsnamn använda en giltig nyckelavgränsare, till exempel :
eller /
, i stället __
för för att säkerställa att namnen matchas korrekt.
Exempel: ServiceBusConnection:fullyQualifiedNamespace
Nu när du har förberett funktionsappen för att ansluta till Service Bus-namnområdet med hjälp av en hanterad identitet kan du lägga till en ny funktion som använder en Service Bus-utlösare i ditt lokala projekt.
Lägga till en Service Bus-utlöst funktion
func init
Kör kommandot så här för att skapa ett funktionsprojekt i en mapp med namnet LocalFunctionProj med den angivna körningen:func init LocalFunctionProj --dotnet
Gå till projektmappen:
cd LocalFunctionProj
Kör följande kommando i rotprojektmappen:
dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 5.2.0
Det här kommandot ersätter standardversionen av Service Bus-tilläggspaketet med en version som stöder hanterade identiteter.
Kör följande kommando för att lägga till en Service Bus-utlöst funktion i projektet:
func new --name ServiceBusTrigger --template ServiceBusQueueTrigger
Det här kommandot lägger till koden för en ny Service Bus-utlösare och en referens till tilläggspaketet. Du måste lägga till en Service Bus-namnområdesanslutningsinställning för den här utlösaren.
Öppna den nya ServiceBusTrigger.cs projektfilen och ersätt
ServiceBusTrigger
klassen med följande kod: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}"); } }
Det här kodexemplet uppdaterar könamnet till
myinputqueue
, vilket är samma namn som du köade som du skapade tidigare. Det anger också namnet på Service Bus-anslutningen tillServiceBusConnection
. Det här namnet är det Service Bus-namnområde som används av den identitetsbaserade anslutningServiceBusConnection__fullyQualifiedNamespace
som du konfigurerade i portalen.
Kommentar
Om du försöker köra funktionerna nu med får func start
du ett fel. Det beror på att du inte har någon identitetsbaserad anslutning som definierats lokalt. Om du vill köra funktionen lokalt anger du appinställningen ServiceBusConnection__fullyQualifiedNamespace
som local.settings.json
du gjorde i [föregående avsnitt](#connect till service-bus-in-your-function-app). Dessutom måste du tilldela rollen till din utvecklaridentitet. Mer information finns i lokal utveckling med identitetsbaserade anslutningar.
Kommentar
När du använder Azure App Configuration eller Key Vault för att ange inställningar för hanterade identitetsanslutningar bör inställningsnamn använda en giltig nyckelavgränsare, till exempel :
eller /
i stället __
för att säkerställa att namnen matchas korrekt.
Exempel: ServiceBusConnection:fullyQualifiedNamespace
Publicera det uppdaterade projektet
Kör följande kommando för att generera de filer som behövs för distributionspaketet lokalt:
dotnet publish --configuration Release
Bläddra till undermappen
\bin\Release\netcoreapp3.1\publish
och skapa en .zip fil från dess innehåll.Publicera .zip-filen genom att köra följande kommando och ersätta parametrarna
FUNCTION_APP_NAME
,RESOURCE_GROUP_NAME
ochPATH_TO_ZIP
efter behov:az functionapp deploy -n FUNCTION_APP_NAME -g RESOURCE_GROUP_NAME --src-path PATH_TO_ZIP
Nu när du har uppdaterat funktionsappen med den nya utlösaren kan du kontrollera att den fungerar med hjälp av identiteten.
Verifiera dina ändringar
I portalen söker
Application Insights
du efter och väljer Application Insights under Tjänster.I Application Insights bläddrar eller söker du efter din namngivna instans.
I din instans väljer du Live Metrics under Undersök.
Håll föregående flik öppen och öppna Azure-portalen på en ny flik. Gå till Service Bus-namnområdet på den nya fliken och välj Köer på den vänstra menyn.
Välj din kö med namnet
myinputqueue
.Välj Service Bus Explorer på den vänstra menyn.
Skicka ett testmeddelande.
Välj den öppna fliken Live Metrics (Live Metrics ) och se körningen av Service Bus-kön.
Grattis! Du har konfigurerat din Service Bus-köutlösare med en hanterad identitet.
Rensa resurser
I de föregående stegen skapade du Azure-resurser i en resursgrupp. Om du inte tror att du behöver dessa resurser i framtiden, kan du ta bort dem genom att ta bort resursgruppen.
På menyn eller startsidan i Azure-portalen väljer du Resursgrupper. Välj sedan myResourceGroup på sidan Resursgrupper.
På sidan myResourceGroup kontrollerar du att resurserna i listan är de som du vill ta bort.
Välj Ta bort resursgrupp, skriv myResourceGroup i textrutan för att bekräfta och välj sedan Ta bort.
Nästa steg
I den här självstudien skapade du en funktionsapp med identitetsbaserade anslutningar.
Gå vidare till nästa artikel för att lära dig hur du hanterar identiteter.