gebeurtenis
17 mrt, 23 - 21 mrt, 23
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenDeze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
In deze quickstart gebruikt u opdrachtregelprogramma's van Azure Developer om functies te maken die reageren op HTTP-aanvragen. Nadat u de code lokaal hebt getest, implementeert u deze in een nieuwe serverloze functie-app die u maakt in een Flex Consumption-abonnement in Azure Functions.
De projectbron maakt gebruik van de Azure Developer CLI (azd) om de implementatie van uw code in Azure te vereenvoudigen. Deze implementatie volgt de huidige aanbevolen procedures voor veilige en schaalbare Azure Functions-implementaties.
Het Flex Consumption-abonnement volgt standaard een factureringsmodel met betalen voor wat u gebruikt . Dit betekent dat voor het voltooien van deze quickstart een kleine kosten van een paar cent of minder in uw Azure-account in rekening worden gebracht.
Een Azure-account met een actief abonnement. Gratis een account maken
JAVA_HOME
moet zijn ingesteld op de installatielocatie van de juiste versie van de JDK.curl
.U kunt de azd init
opdracht gebruiken om een lokaal Azure Functions-codeproject te maken op basis van een sjabloon.
Voer in uw lokale terminal of opdrachtprompt deze azd init
opdracht uit in een lege map:
azd init --template functions-quickstart-dotnet-azd -e flexquickstart-dotnet
Met deze opdracht worden de projectbestanden opgehaald uit de sjabloonopslagplaats en wordt het project in de huidige map geïnitialiseerd. Met -e
de vlag wordt een naam ingesteld voor de huidige omgeving. In azd
wordt de omgeving gebruikt om een unieke implementatiecontext voor uw app te onderhouden en kunt u meer dan één definiëren. Deze wordt ook gebruikt in de naam van de resourcegroep die u in Azure maakt.
Voer deze opdracht uit om naar de http
app-map te navigeren:
cd http
Maak een bestand met de naam local.settings.json in de http
map die deze JSON-gegevens bevat:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
}
}
Dit bestand is vereist wanneer het lokaal wordt uitgevoerd.
Voer in uw lokale terminal of opdrachtprompt deze azd init
opdracht uit in een lege map:
azd init --template azure-functions-java-flex-consumption-azd -e flexquickstart-java
Met deze opdracht worden de projectbestanden opgehaald uit de sjabloonopslagplaats en wordt het project in de huidige map geïnitialiseerd. Met -e
de vlag wordt een naam ingesteld voor de huidige omgeving. In azd
wordt de omgeving gebruikt om een unieke implementatiecontext voor uw app te onderhouden en kunt u meer dan één definiëren. Deze wordt ook gebruikt in de naam van de resourcegroep die u in Azure maakt.
Voer deze opdracht uit om naar de http
app-map te navigeren:
cd http
Maak een bestand met de naam local.settings.json in de http
map die deze JSON-gegevens bevat:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "java"
}
}
Dit bestand is vereist wanneer het lokaal wordt uitgevoerd.
Voer in uw lokale terminal of opdrachtprompt deze azd init
opdracht uit in een lege map:
azd init --template functions-quickstart-javascript-azd -e flexquickstart-js
Met deze opdracht worden de projectbestanden opgehaald uit de sjabloonopslagplaats en wordt het project geïnitialiseerd in de hoofdmap. Met -e
de vlag wordt een naam ingesteld voor de huidige omgeving. In azd
wordt de omgeving gebruikt om een unieke implementatiecontext voor uw app te onderhouden en kunt u meer dan één definiëren. Deze wordt ook gebruikt in de naam van de resourcegroep die u in Azure maakt.
Maak een bestand met de naam local.settings.json in de hoofdmap die deze JSON-gegevens bevat:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "node"
}
}
Dit bestand is vereist wanneer het lokaal wordt uitgevoerd.
Voer in uw lokale terminal of opdrachtprompt deze azd init
opdracht uit in een lege map:
azd init --template functions-quickstart-powershell-azd -e flexquickstart-ps
Met deze opdracht worden de projectbestanden opgehaald uit de sjabloonopslagplaats en wordt het project geïnitialiseerd in de hoofdmap. Met -e
de vlag wordt een naam ingesteld voor de huidige omgeving. In azd
wordt de omgeving gebruikt om een unieke implementatiecontext voor uw app te onderhouden en kunt u meer dan één definiëren. Deze wordt ook gebruikt in de naam van de resourcegroep die u in Azure maakt.
Voer deze opdracht uit om naar de src
app-map te navigeren:
cd src
Maak een bestand met de naam local.settings.json in de src
map die deze JSON-gegevens bevat:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "powershell",
"FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2"
}
}
Dit bestand is vereist wanneer het lokaal wordt uitgevoerd.
Voer in uw lokale terminal of opdrachtprompt deze azd init
opdracht uit in een lege map:
azd init --template functions-quickstart-typescript-azd -e flexquickstart-ts
Met deze opdracht worden de projectbestanden opgehaald uit de sjabloonopslagplaats en wordt het project geïnitialiseerd in de hoofdmap. Met -e
de vlag wordt een naam ingesteld voor de huidige omgeving. In azd
wordt de omgeving gebruikt om een unieke implementatiecontext voor uw app te onderhouden en kunt u meer dan één definiëren. Deze wordt ook gebruikt in de naam van de resourcegroep die u in Azure maakt.
Maak een bestand met de naam local.settings.json in de hoofdmap die deze JSON-gegevens bevat:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "node"
}
}
Dit bestand is vereist wanneer het lokaal wordt uitgevoerd.
Voer in uw lokale terminal of opdrachtprompt deze azd init
opdracht uit in een lege map:
azd init --template functions-quickstart-python-http-azd -e flexquickstart-py
Met deze opdracht worden de projectbestanden opgehaald uit de sjabloonopslagplaats en wordt het project geïnitialiseerd in de hoofdmap. Met -e
de vlag wordt een naam ingesteld voor de huidige omgeving. In azd
wordt de omgeving gebruikt om een unieke implementatiecontext voor uw app te onderhouden en kunt u meer dan één definiëren. Deze wordt ook gebruikt in de naam van de resourcegroep die u in Azure maakt.
Maak een bestand met de naam local.settings.json in de hoofdmap die deze JSON-gegevens bevat:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "python"
}
}
Dit bestand is vereist wanneer het lokaal wordt uitgevoerd.
Voer in de hoofdmap deze opdrachten uit om een virtuele omgeving met de naam .venv
:
python3 -m venv .venv
source .venv/bin/activate
Als Python het venv-pakket niet heeft geïnstalleerd in uw Linux-distributie, voert u de volgende opdracht uit:
sudo apt-get install python3-venv
Voer deze opdracht uit vanuit uw app-map in een terminal of opdrachtprompt:
func start
mvn clean package
mvn azure-functions:run
npm install
func start
npm install
npm start
Wanneer de Functions-host in uw lokale projectmap wordt gestart, worden de URL-eindpunten van uw door HTTP geactiveerde functies naar de terminaluitvoer geschreven.
Navigeer in uw browser naar het httpget
eindpunt, dat eruit moet zien als deze URL:
Voer vanuit een nieuw terminal- of opdrachtpromptvenster deze curl
opdracht uit om een POST-aanvraag met een JSON-nettolading naar het httppost
eindpunt te verzenden:
curl -i http://localhost:7071/api/httppost -H "Content-Type: text/json" -d @testdata.json
curl -i http://localhost:7071/api/httppost -H "Content-Type: text/json" -d "@src/functions/testdata.json"
Met deze opdracht worden JSON-nettoladinggegevens uit het testdata.json
projectbestand gelezen. U vindt voorbeelden van beide HTTP-aanvragen in het test.http
projectbestand.
Wanneer u klaar bent, drukt u op Ctrl+C in het terminalvenster om het func.exe
hostproces te stoppen.
deactivate
uit om de virtuele omgeving af te sluiten.U kunt de code controleren waarmee de twee HTTP-triggerfunctieeindpunten worden gedefinieerd:
[Function("httpget")]
public IActionResult Run([HttpTrigger(AuthorizationLevel.Function, "get")]
HttpRequest req,
string name)
{
var returnValue = string.IsNullOrEmpty(name)
? "Hello, World."
: $"Hello, {name}.";
_logger.LogInformation($"C# HTTP trigger function processed a request for {returnValue}.");
return new OkObjectResult(returnValue);
}
@FunctionName("httpget")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.FUNCTION)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
// Parse query parameter
String name = Optional.ofNullable(request.getQueryParameters().get("name")).orElse("World");
return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
}
const { app } = require('@azure/functions');
app.http('httpget', {
methods: ['GET'],
authLevel: 'function',
handler: async (request, context) => {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || await request.text() || 'world';
return { body: `Hello, ${name}!` };
}
});
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";
export async function httpGetFunction(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || await request.text() || 'world';
return { body: `Hello, ${name}!` };
};
app.http('httpget', {
methods: ['GET'],
authLevel: 'function',
handler: httpGetFunction
});
Dit function.json
bestand definieert de httpget
functie:
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get"
],
"route": "httpget"
},
{
"type": "http",
"direction": "out",
"name": "Response"
}
]
}
Met dit run.ps1
bestand wordt de functiecode geïmplementeerd:
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters
$name = $Request.Query.name
$body = "This HTTP triggered function executed successfully. Pass a name in the query string for a personalized response."
if ($name) {
$body = "Hello, $name. This HTTP triggered function executed successfully."
}
# Associate values to output bindings by calling 'Push-OutputBinding'.
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = [HttpStatusCode]::OK
Body = $body
})
@app.route(route="httpget", methods=["GET"])
def http_get(req: func.HttpRequest) -> func.HttpResponse:
name = req.params.get("name", "World")
logging.info(f"Processing GET request. Name: {name}")
return func.HttpResponse(f"Hello, {name}!")
U kunt hier het volledige sjabloonproject bekijken.
U kunt hier het volledige sjabloonproject bekijken.
U kunt hier het volledige sjabloonproject bekijken.
U kunt hier het volledige sjabloonproject bekijken.
U kunt hier het volledige sjabloonproject bekijken.
U kunt hier het volledige sjabloonproject bekijken.
Nadat u uw functies lokaal hebt gecontroleerd, is het tijd om ze te publiceren naar Azure.
Dit project is geconfigureerd voor het gebruik van de opdracht voor het azd provision
maken van een functie-app in een Flex Consumption-abonnement, samen met andere vereiste Azure-resources.
Notitie
Dit project bevat een set Bicep-bestanden die azd
wordt gebruikt om een veilige implementatie te maken voor een Flex-verbruiksplan dat de aanbevolen procedures volgt.
De azd up
en azd deploy
opdrachten worden momenteel niet ondersteund voor Java-apps.
Voer in de hoofdmap van het project deze opdracht uit om de vereiste Azure-resources te maken:
azd provision
De hoofdmap bevat het azure.yaml
definitiebestand dat vereist is voor azd
.
Als u nog niet bent aangemeld, wordt u gevraagd om u te verifiëren met uw Azure-account.
Geef de volgende vereiste implementatieparameters op wanneer u hierom wordt gevraagd:
Parameter | Description |
---|---|
Azure-abonnement | Abonnement waarin uw resources worden gemaakt. |
Azure-locatie | Azure-regio waarin de resourcegroep wordt gemaakt die de nieuwe Azure-resources bevat. Alleen regio's die momenteel ondersteuning bieden voor het Flex Consumption-abonnement, worden weergegeven. |
De azd provision
opdracht gebruikt uw reactie op deze prompts met de Bicep-configuratiebestanden om deze vereiste Azure-resources te maken en te configureren:
Nadat de opdracht is voltooid, kunt u uw projectcode implementeren in deze nieuwe functie-app in Azure.
U kunt Core Tools gebruiken om uw code in te pakken en in Azure te implementeren vanuit de target
uitvoermap.
Navigeer naar het equivalent van de app-map in de target
uitvoermap:
cd http/target/azure-functions/contoso-functions
Deze map moet een host.json-bestand hebben, wat aangeeft dat het de hoofdmap is van uw gecompileerde Java-functie-app.
Voer deze opdrachten uit om uw gecompileerde Java-codeproject te implementeren in de nieuwe functie-app-resource in Azure met behulp van Core Tools:
APP_NAME=$(azd env get-value AZURE_FUNCTION_NAME)
func azure functionapp publish $APP_NAME
Met de azd env get-value
opdracht wordt de naam van uw functie-app opgehaald uit de lokale omgeving, die vereist is voor implementatie met behulp van func azure functionapp publish
. Nadat het publiceren is voltooid, ziet u koppelingen naar de HTTP-triggereindpunten in Azure.
Dit project is geconfigureerd om de azd up
opdracht te gebruiken om dit project te implementeren in een nieuwe functie-app in een Flex Consumption-abonnement in Azure.
Tip
Dit project bevat een set Bicep-bestanden die azd
wordt gebruikt om een veilige implementatie te maken voor een Flex-verbruiksplan dat de aanbevolen procedures volgt.
Voer deze opdracht uit om de vereiste Azure-resources in Azure te maken azd
en uw codeproject te implementeren in de nieuwe functie-app:
azd up
De hoofdmap bevat het azure.yaml
definitiebestand dat vereist is voor azd
.
Als u nog niet bent aangemeld, wordt u gevraagd om u te verifiëren met uw Azure-account.
Geef de volgende vereiste implementatieparameters op wanneer u hierom wordt gevraagd:
Parameter | Description |
---|---|
Azure-abonnement | Abonnement waarin uw resources worden gemaakt. |
Azure-locatie | Azure-regio waarin de resourcegroep wordt gemaakt die de nieuwe Azure-resources bevat. Alleen regio's die momenteel ondersteuning bieden voor het Flex Consumption-abonnement, worden weergegeven. |
De azd up
opdracht gebruikt uw reactie op deze prompts met de Bicep-configuratiebestanden om deze implementatietaken te voltooien:
Maak en configureer deze vereiste Azure-resources (equivalent aan azd provision
):
Verpakt en implementeer uw code in de implementatiecontainer (equivalent aan azd deploy
). De app wordt vervolgens gestart en uitgevoerd in het geïmplementeerde pakket.
Nadat de opdracht is voltooid, ziet u koppelingen naar de resources die u hebt gemaakt.
U kunt nu uw functie-eindpunten in Azure aanroepen door HTTP-aanvragen naar hun URL's te verzenden met behulp van uw HTTP-testhulpprogramma of vanuit de browser (voor GET-aanvragen). Wanneer uw functies worden uitgevoerd in Azure, wordt autorisatie van toegangssleutels afgedwongen en moet u een functietoegangssleutel opgeven bij uw aanvraag.
U kunt de Core Tools gebruiken om de URL-eindpunten te verkrijgen van uw functies die worden uitgevoerd in Azure.
Voer in uw lokale terminal of opdrachtprompt deze opdrachten uit om de URL-eindpuntwaarden op te halen:
$APP_NAME = azd env get-value AZURE_FUNCTION_NAME
func azure functionapp list-functions $APP_NAME --show-keys
Met azd env get-value
de opdracht wordt de naam van uw functie-app opgehaald uit de lokale omgeving. Als u de --show-keys
optie gebruikt, betekent func azure functionapp list-functions
dit dat de geretourneerde aanroep-URL: waarde voor elk eindpunt een toegangssleutel op functieniveau bevat.
Net als voorheen gebruikt u uw HTTP-testhulpprogramma om deze URL's te valideren in uw functie-app die wordt uitgevoerd in Azure.
U kunt de azd up
opdracht zo vaak uitvoeren als nodig is om uw Azure-resources in te richten en code-updates te implementeren in uw functie-app.
Notitie
Geïmplementeerde codebestanden worden altijd overschreven door het nieuwste implementatiepakket.
Uw eerste antwoorden op azd
prompts en eventuele omgevingsvariabelen die worden azd
gegenereerd, worden lokaal opgeslagen in uw benoemde omgeving. Gebruik de azd env get-values
opdracht om alle variabelen in uw omgeving te controleren die zijn gebruikt bij het maken van Azure-resources.
Wanneer u klaar bent met het werken met uw functie-app en gerelateerde resources, kunt u deze opdracht gebruiken om de functie-app en de bijbehorende resources uit Azure te verwijderen en eventuele verdere kosten te voorkomen:
azd down --no-prompt
Notitie
Met de --no-prompt
optie krijgt u de opdracht azd
om uw resourcegroep te verwijderen zonder een bevestiging van u.
Deze opdracht heeft geen invloed op uw lokale codeproject.
gebeurtenis
17 mrt, 23 - 21 mrt, 23
Neem deel aan de meetup-serie om schaalbare AI-oplossingen te bouwen op basis van praktijkgebruiksvoorbeelden met collega-ontwikkelaars en experts.
Nu registrerenTraining
Module
Een API publiceren naar Azure Static Web Apps - Training
Publiceer een Angular-, React-, Svelte- of Vue JavaScript-app en -API met Azure Static Web Apps en Azure Functions. Implementeer uw code van GitHub naar een faseringssite met behulp van preview-URL's.
Certificering
Bouw end-to-end-oplossingen in Microsoft Azure om Azure Functions te maken, web-apps te implementeren en te beheren, oplossingen te ontwikkelen die gebruikmaken van Azure Storage en meer.