Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier les répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer de répertoire.
Dans ce guide de démarrage rapide, vous utilisez les outils en ligne de commande Du développeur Azure pour créer une API web évolutive avec des points de terminaison de fonction qui répondent aux requêtes HTTP. Après avoir testé le code localement, vous le déployez sur une nouvelle application de fonction serverless que vous créez et qui s’exécute dans un plan Consommation flexible dans Azure Functions.
La source du projet utilise Azure Developer CLI (azd) pour simplifier le déploiement de votre code sur Azure. Ce déploiement suit les bonnes pratiques actuelles pour les déploiements Azure Functions sécurisés et scalables.
Par défaut, le plan Flex Consumption suit un modèle de facturation avec paiement à l’utilisation , ce qui signifie que l’exécution de ce guide de démarrage rapide entraîne un petit coût de quelques cents USD ou moins dans votre compte Azure.
Prerequisites
Compte Azure avec un abonnement actif. Créez un compte gratuitement.
-
Kit de développement Java 17
- Si vous utilisez une autre version prise en charge de Java, vous devez mettre à jour le fichier pom.xml du projet.
- La
JAVA_HOMEvariable d’environnement doit être définie sur l’emplacement d’installation de la version correcte du Kit de développement Java (JDK).
- Apache Maven 3.8.x
- Un outil de test HTTP sécurisé pour envoyer des requêtes avec des charges utiles JSON à vos points de terminaison de fonction. Cet article utilise
curl.
Initialiser le projet
Utilisez la azd init commande pour créer un projet de code Azure Functions local à partir d’un modèle.
Dans votre terminal local ou à l’invite de commandes, exécutez cette commande
azd initdans un dossier vide :azd init --template functions-quickstart-dotnet-azd -e httpendpoint-dotnetCette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier actif. L’indicateur
-edéfinit un nom pour l’environnement actuel. Dansazd, l’environnement gère un contexte de déploiement unique pour votre application et vous pouvez en définir plusieurs. Il est également utilisé dans le nom du groupe de ressources que vous créez dans Azure.Exécutez cette commande pour accéder au dossier de l’application
http:cd httpCréez un fichier nommé local.settings.json dans le
httpdossier qui contient ces données JSON :{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated" } }Ce fichier est requis lors d’une exécution locale.
Dans votre terminal local ou à l’invite de commandes, exécutez cette commande
azd initdans un dossier vide :azd init --template azure-functions-java-flex-consumption-azd -e httpendpoint-javaCette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier actif. L’indicateur
-edéfinit un nom pour l’environnement actuel. Dansazd, l’environnement gère un contexte de déploiement unique pour votre application et vous pouvez en définir plusieurs. Il est également utilisé dans le nom du groupe de ressources que vous créez dans Azure.Exécutez cette commande pour accéder au dossier de l’application
http:cd httpCréez un fichier nommé local.settings.json dans le
httpdossier qui contient ces données JSON :{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "java" } }Ce fichier est requis lors d’une exécution locale.
Dans votre terminal local ou à l’invite de commandes, exécutez cette commande
azd initdans un dossier vide :azd init --template functions-quickstart-javascript-azd -e httpendpoint-jsCette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier racine. L’indicateur
-edéfinit un nom pour l’environnement actuel. Dansazd, l’environnement gère un contexte de déploiement unique pour votre application et vous pouvez en définir plusieurs. Il est également utilisé dans le nom du groupe de ressources que vous créez dans Azure.Créez un fichier nommé local.settings.json dans le dossier racine qui contient ces données JSON :
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node" } }Ce fichier est requis lors d’une exécution locale.
Dans votre terminal local ou à l’invite de commandes, exécutez cette commande
azd initdans un dossier vide :azd init --template functions-quickstart-powershell-azd -e httpendpoint-psCette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier racine. L’indicateur
-edéfinit un nom pour l’environnement actuel. Dansazd, l’environnement gère un contexte de déploiement unique pour votre application et vous pouvez en définir plusieurs. Il est également utilisé dans le nom du groupe de ressources que vous créez dans Azure.Exécutez cette commande pour accéder au dossier de l’application
src:cd srcCréez un fichier nommé local.settings.json dans le
srcdossier qui contient ces données JSON :{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "powershell", "FUNCTIONS_WORKER_RUNTIME_VERSION": "7.2" } }Ce fichier est requis lors d’une exécution locale.
Dans votre terminal local ou à l’invite de commandes, exécutez cette commande
azd initdans un dossier vide :azd init --template functions-quickstart-typescript-azd -e httpendpoint-tsCette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier racine. L’indicateur
-edéfinit un nom pour l’environnement actuel. Dansazd, l’environnement gère un contexte de déploiement unique pour votre application et vous pouvez en définir plusieurs. Le nom de l’environnement est également utilisé dans le nom du groupe de ressources que vous créez dans Azure.Créez un fichier nommé local.settings.json dans le dossier racine qui contient ces données JSON :
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "node" } }Ce fichier est requis lors d’une exécution locale.
Dans votre terminal local ou à l’invite de commandes, exécutez cette commande
azd initdans un dossier vide :azd init --template functions-quickstart-python-http-azd -e httpendpoint-pyCette commande extrait les fichiers projet du référentiel de modèles et initialise le projet dans le dossier racine. L’indicateur
-edéfinit un nom pour l’environnement actuel. Dansazd, l’environnement gère un contexte de déploiement unique pour votre application et vous pouvez en définir plusieurs. Le nom de l’environnement est également utilisé dans le nom du groupe de ressources que vous créez dans Azure.Créez un fichier nommé local.settings.json dans le dossier racine qui contient ces données JSON :
{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "UseDevelopmentStorage=true", "FUNCTIONS_WORKER_RUNTIME": "python" } }Ce fichier est requis lors d’une exécution locale.
Créer et activer un environnement virtuel
Dans le dossier racine, exécutez ces commandes pour créer et activer un environnement virtuel nommé .venv :
python3 -m venv .venv
source .venv/bin/activate
Si Python n’installe pas le package venv sur votre distribution Linux, exécutez la commande suivante :
sudo apt-get install python3-venv
Exécuter dans votre environnement local
Exécutez cette commande à partir du dossier de votre application dans un terminal ou à l’invite de commandes :
func startmvn clean package mvn azure-functions:runnpm install func startnpm install npm startLorsque l’hôte Functions démarre dans votre dossier de projet local, il écrit les points de terminaison d’URL de vos fonctions déclenchées par requête HTTP dans la sortie du terminal.
Note
Étant donné que l’autorisation de clé d’accès n’est pas appliquée lors de l’exécution localement, l’URL de la fonction retournée n’inclut pas la valeur de clé d’accès et vous n’en avez pas besoin pour appeler votre fonction.
Dans votre navigateur, accédez au point de terminaison
httpget, qui doit ressembler à cette URL :À partir d’une nouvelle fenêtre d’invite de commandes ou de terminal, exécutez cette commande
curlpour envoyer une requête POST avec une charge utile JSON au point de terminaisonhttppost:curl -i http://localhost:7071/api/httppost -H "Content-Type: text/json" -d @testdata.jsoncurl -i http://localhost:7071/api/httppost -H "Content-Type: text/json" -d "@src/functions/testdata.json"Cette commande lit les données de la charge utile JSON à partir du fichier projet
testdata.json. Vous trouverez des exemples des deux requêtes HTTP dans le fichier projettest.http.Lorsque vous avez terminé, appuyez sur Ctrl + C dans la fenêtre du terminal pour arrêter le processus hôte
func.exe.
- Exécutez
deactivatepour arrêter l’environnement virtuel.
Examiner le code (facultatif)
Vous pouvez consulter le code qui définit les deux points de terminaison de fonction de déclencheur HTTP :
[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
});
Ce fichier function.json définit la fonction httpget :
{
"bindings": [
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get"
],
"route": "httpget"
},
{
"type": "http",
"direction": "out",
"name": "Response"
}
]
}
Ce fichier run.ps1 implémente le code de fonction :
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}!")
Vous pouvez consulter le projet de modèle complet ici.
Vous pouvez consulter le projet de modèle complet ici.
Vous pouvez consulter le projet de modèle complet ici.
Vous pouvez consulter le projet de modèle complet ici.
Vous pouvez consulter le projet de modèle complet ici.
Vous pouvez consulter le projet de modèle complet ici.
Après avoir vérifié vos fonctions en local, il est temps de les publier sur Azure.
Déployer dans Azure
Ce projet est configuré pour utiliser la commande azd up visant à déployer ce projet dans une nouvelle application de fonction dans un plan Consommation flexible dans Azure.
Tip
Le projet inclut un ensemble de fichiers Bicep (dossier infra) que azd utilise pour créer un déploiement sécurisé dans un plan de consommation Flex qui suit les meilleures pratiques.
Exécutez cette commande pour qu’
azdcrée les ressources Azure requises dans Azure et déployer votre projet de code dans la nouvelle application de fonction :azd upLe dossier racine contient le fichier de définition
azure.yamlexigé parazd.Si vous n’êtes pas déjà connecté, vous êtes invité à vous authentifier auprès de votre compte Azure.
Lorsque vous y êtes invité, fournissez ces paramètres de déploiement requis :
Parameter Description Abonnement Azure Abonnement dans lequel vos ressources sont créées. Emplacement Azure Région Azure dans laquelle créer le groupe de ressources qui contient les nouvelles ressources Azure. Seules sont montrées les régions qui prennent actuellement en charge le plan Consommation flexible. vnetEnabled Choisissez False. Lorsque la valeur est True , le déploiement crée votre application de fonction dans un nouveau réseau virtuel. La
azd upcommande utilise les réponses que vous fournissez à ces invites, ainsi que les fichiers de configuration Bicep, pour accomplir ces tâches de déploiement :Créez et configurez ces ressources Azure requises (équivalentes à
azd provision) :- Plan Consommation flexible et application de fonction
- Stockage Azure (obligatoire) et Application Insights (recommandé)
- Stratégies d’accès et rôles pour votre compte
- Connexions de service à service avec des identités managées (au lieu de chaînes de connexion stockées)
- (Option) Réseau virtuel pour exécuter en toute sécurité l’application de fonction et les autres ressources Azure
Empaquetez et déployez votre code sur le conteneur de déploiement (équivalent à
azd deploy). L’application est ensuite démarrée et s’exécute dans le package déployé.
Une fois la commande terminée, vous voyez des liens vers les ressources que vous avez créées.
Appeler la fonction sur Azure
Vous pouvez maintenant appeler vos points de terminaison de fonction dans Azure en effectuant des requêtes HTTP à leurs URL à l’aide de votre outil de test HTTP ou à partir du navigateur (pour les requêtes GET). Lorsque vos fonctions s’exécutent dans Azure, l’autorisation par clé d’accès est appliquée et vous devez fournir une clé d’accès de fonction à votre requête.
Vous pouvez utiliser Core Tools pour obtenir les points de terminaison d’URL de vos fonctions s’exécutant dans Azure.
Dans votre terminal local ou à l’invite de commandes, exécutez ces commandes pour obtenir les valeurs des points de terminaison d’URL :
$APP_NAME = azd env get-value AZURE_FUNCTION_NAME func azure functionapp list-functions $APP_NAME --show-keysLa commande
azd env get-valueobtient le nom de votre application de fonction à partir de l’environnement local. Lorsque vous utilisez l’option--show-keysavecfunc azure functionapp list-functions, l'URL 'Invoke' retournée pour chaque point de terminaison inclut une clé d’accès au niveau de la fonction.Comme précédemment, utilisez votre outil de test HTTP pour valider ces URL dans votre application de fonction s’exécutant dans Azure.
Redéployer votre code
Exécutez la azd up commande autant de fois que vous devez provisionner vos ressources Azure et déployer des mises à jour de code sur votre application de fonction.
Note
Les fichiers de code déployés sont toujours remplacés par le dernier package de déploiement.
Vos réponses initiales aux invites d’azd et toutes les variables d’environnement générées par azd sont stockées localement dans votre environnement nommé. Utilisez la azd env get-values commande pour passer en revue toutes les variables de votre environnement que vous avez utilisées lors de la création de ressources Azure.
Nettoyer les ressources
Lorsque vous avez terminé d’utiliser votre application de fonction et vos ressources associées, utilisez cette commande pour supprimer l’application de fonction et ses ressources associées d’Azure et éviter d’entraîner d’autres coûts :
azd down --no-prompt
Note
L’option --no-prompt indique à azd de supprimer votre groupe de ressources sans confirmation de votre part.
Cette commande n’affecte pas votre projet de code local.