Oefening: een functie publiceren naar Azure met behulp van Core Tools
In deze oefening maakt u een functie-app in Azure en publiceert u ons project.
Een functie-app maken
Belangrijk
De procedures in deze eenheid zijn afhankelijk van de werkzaamheden die in eenheid 3 zijn voltooid. De sandbox voor deze module moet actief zijn. De sandbox biedt u gratis, tijdelijke toegang tot Azure en de Azure CLI.
De Azure Cloud Shell moet al zijn aangemeld bij uw account en zijn geconfigureerd. Als de sandbox niet actief is, bent u de benodigde toegang, resources en uitvoer kwijtgeraakt. Ga terug en voltooi Unit 3.
Voordat u uw code kunt publiceren naar een functie-app met behulp van Core Tools, moet u de app in Azure maken met behulp van de Azure CLI vanuit Cloud Shell.
Als u een functie-app in Azure wilt maken, voert u de volgende opdrachten uit in 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
Dit is wat deze opdrachten doen:
De eerste drie regels bovenaan maken shell-variabelen met waarden die we herhaaldelijk gebruiken in de volgende opdrachten.
- Geef voor de resourcegroep de groep op die voor u is gemaakt door de sandbox. Dit moet al de juiste waarde zijn op basis van uw huidige sandbox.
- De namen van het opslagaccount en de functie-app bevatten
$(openssl rand -hex 5)
, die een willekeurige tekenreeks van vijf tekens genereert, om ervoor te zorgen dat de namen voldoen aan de vereiste om wereldwijd uniek te zijn, evenals andere servicenaamvereisten.
az storage account create
maakt een Azure-opslagaccount dat door de functie-app wordt gebruikt. Een opslagaccount is een afzonderlijke Azure-resource die moet worden gemaakt voordat de functie-app kan worden gemaakt.Met
az functionapp create
wordt de functie-app gemaakt. Uw nieuwe app maakt gebruik van denode
runtime (JavaScript), die serverloos wordt uitgevoerd in een hostingabonnement verbruik.
Notitie
De az functionapp create
opdracht probeert ook automatisch een Application Insights-exemplaar te maken voor het bewaken van uitvoeringen in uw functie-app. Omdat Application Insights-resources op basis van werkruimten momenteel niet kunnen worden gehost in de sandbox, werken uw functies, maar worden uitvoeringslogboeken niet verzonden naar Application Insights.
Publiceren naar Azure
Nu u uw functie-app in Azure hebt gemaakt, kunt u het project naar het project publiceren met de Core Tools.
Voer de volgende opdrachten uit in Cloud Shell om te publiceren. Voer cd
eerst uit om ervoor te zorgen dat u zich nog in de projectmap van Functions bevindt voordat u publiceert.
cd ~/loan-wizard
func azure functionapp publish "$FUNCTIONAPP" --force
Notitie
Als met deze opdracht een fout wordt weergegeven dat uw app niet kan worden gevonden, wacht u twee minuten en probeert u het opnieuw. Het duurt enkele seconden voordat nieuwe functie-apps worden gedetecteerd door de Core Tools nadat ze zijn gemaakt.
U voegt ook de opdracht toe --force
om de versie van de functie-app niet bij te werken.
In tegenstelling tot de vorige oefening, waar u uw functie tijdelijk lokaal hebt gehost vanuit de Core Tools, is uw functie nu live op internet. Deze blijft wereldwijd beschikbaar totdat de sandbox voor deze zelfstudie verloopt. Omdat het HTTP-eindpunt is gedefinieerd met een anonymous
autorisatieniveau, kan het worden geopend door iedereen op internet.
De functie uitvoeren
Uw functie is nu gepubliceerd naar Azure en kan vanaf elke locatie worden aangeroepen. Als een door HTTP geactiveerde functie die reageert op GET-aanvragen, kan deze worden uitgevoerd vanuit elke browser.
Voer de volgende opdracht uit om de aanvraag-URL op te halen:
func azure functionapp list-functions "$FUNCTIONAPP" --show-keys
Plak de URL uit de uitvoer in een nieuw browsertabblad. U ziet dezelfde uitvoer die u hebt waargenomen toen u de functie lokaal uitvoerde zonder de juiste queryreeksparameters op te geven. Er worden geen sleutels opgenomen in de uitvoer wanneer u een
anonymous
autorisatieniveau gebruikt.Voeg
?principal=5000&rate=.035&term=36
toe aan het einde van de URL en selecteer Enter. Zorg ervoor dat u decode
parameter behoudt, indien aanwezig. Het geretourneerde resultaat is6300.000000000001
, zoals verwacht.