Övning – Publicera en funktion i Azure med core tools
I den här övningen skapar du en funktionsapp i Azure och publicerar vårt projekt.
Skapa en funktionsapp
Viktigt!
Procedurerna i den här lektionen beror på arbete som slutförts i enhet 3. Sandbox-miljön för den här modulen måste vara aktiv. Sandbox-miljön ger dig kostnadsfri, tillfällig åtkomst till Azure och Azure CLI.
Azure Cloud Shell bör redan vara inloggad på ditt konto och konfigurerats. Om sandbox-miljön inte är aktiv har du förlorat nödvändig åtkomst, resurser och utdata som du behöver. Gå tillbaka och slutför enhet 3.
Innan du kan publicera koden till en funktionsapp med Core Tools måste du skapa appen i Azure med hjälp av Azure CLI från Cloud Shell.
Om du vill skapa en funktionsapp i Azure kör du följande kommandon i Azure Cloud Shell.
RESOURCEGROUP="<rgn>[sandbox resource group]</rgn>"
STORAGEACCT=learnstorage$(openssl rand -hex 5)
FUNCTIONAPP=learnfunctions$(openssl rand -hex 5)
az storage account create \
--resource-group "$RESOURCEGROUP" \
--name "$STORAGEACCT" \
--kind StorageV2 \
--location centralus
az functionapp create \
--resource-group "$RESOURCEGROUP" \
--name "$FUNCTIONAPP" \
--storage-account "$STORAGEACCT" \
--runtime node \
--consumption-plan-location centralus \
--functions-version 4
Dessa kommandon gör följande:
De första tre raderna högst upp skapar gränssnittsvariabler med värden som vi använder upprepade gånger i följande kommandon.
- För resursgrupp anger du den grupp som skapats åt dig av sandbox-miljön. Detta bör redan vara rätt värde baserat på din aktuella sandbox-miljö.
- Namnen på lagringskontot och funktionsappen innehåller
$(openssl rand -hex 5)
, som genererar en slumpmässig sträng med fem tecken, för att säkerställa att namnen uppfyller kravet på att vara globalt unika samt andra namngivningskrav för tjänsten.
az storage account create
skapar ett Azure Storage-konto som funktionsappen använder. Ett lagringskonto är en separat Azure-resurs som måste skapas innan funktionsappen kan skapas.az functionapp create
skapar funktionsappen. Den nya appen använder (JavaScript)-körningennode
, som körs serverlös i en förbrukningsvärdplan.
Kommentar
Kommandot az functionapp create
försöker också automatiskt skapa en Application Insights-instans för övervakning av körningar i funktionsappen. Eftersom arbetsytebaserade Application Insights-resurser för närvarande inte kan finnas i sandbox-miljön fungerar dina funktioner, men körningsloggarna skickas inte till Application Insights.
Publicera till Azure
Nu när du har skapat funktionsappen i Azure kan du publicera projektet till den med Core Tools.
Kör följande kommandon i Cloud Shell för att publicera. Kör cd
först för att se till att du fortfarande är i funktionsprojektmappen innan du publicerar.
cd ~/loan-wizard
func azure functionapp publish "$FUNCTIONAPP" --force
Kommentar
Om det här kommandot visar ett fel som inte kan hitta din app väntar du två minuter och försöker igen. Det tar några sekunder innan nya funktionsappar blir synliga för Core Tools efter att de har skapats.
Dessutom lägger --force
du till kommandot för att uppdatera funktionsappversionens matchningsfel.
Till skillnad från föregående övning, där du tillfälligt var värd för din funktion lokalt från Core Tools, är funktionen nu live på webben. Den är fortfarande globalt tillgänglig tills sandbox-miljön för den här självstudien upphör att gälla. Eftersom HTTP-slutpunkten har definierats med en anonymous
auktoriseringsnivå kan den nås av vem som helst på webben.
Kör funktionen
Funktionen har nu publicerats i Azure och kan anropas var som helst. Som en HTTP-utlöst funktion som svarar på GET-begäranden kan den köras från valfri webbläsare.
Kör följande kommando för att hämta begärande-URL:en:
func azure functionapp list-functions "$FUNCTIONAPP" --show-keys
Klistra in URL:en från utdata på en ny webbläsarflik. Du ser samma utdata som du observerade när du körde funktionen lokalt utan att ange rätt frågesträngsparametrar. Inga nycklar ingår i utdata när du använder en
anonymous
auktoriseringsnivå.Lägg till
?principal=5000&rate=.035&term=36
i slutet av URL:en och välj Retur. Se till att du bevarar parametern om dencode
finns. Resultatet som returneras är6300.000000000001
, som förväntat.