- Azure
- Azure Functions
- Dotnet
Lorsque vous développez une Azure Function, vous devrez probablement utiliser certains paramètres qui seront définis par environnement. Ces fichiers de paramètres peuvent être ajoutés à votre contrôle de code source uniquement s’ils ne contiennent pas de valeurs sensibles, telles qu’un mot de passe, des tokens ou des secrets.
Dans ce tutoriel, nous verrons comment charger le fichier settings.json
et le remplacer par des valeurs locales dans votre local.settings.json
à des fins de développement.
Pour pouvoir utiliser vos fichiers de paramètres, vous devez les charger lorsque vous lancez votre Azure Function, qui se trouve dans le fichier Startup.cs
:
[assembly: FunctionsStartup(typeof(Company.Function.Startup))]
namespace Company.Function
{
internal class Startup : FunctionsStartup
{
public override void Configure(IFunctionsHostBuilder builder)
{
var configuration = BuildConfiguration(builder.GetContext().ApplicationRootPath);
builder.Services.AddAppConfiguration(configuration);
}
private IConfiguration BuildConfiguration(string applicationRootPath)
{
var config =
new ConfigurationBuilder()
.SetBasePath(applicationRootPath)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
.AddJsonFile("settings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
return config;
}
}
}
Comme vous pouvez le voir ci-dessus, la méthode BuildConfiguration
charge deux fichiers json :
Le fichier local.settings.json
est l’endroit où vous pouvez définir les valeurs de votre projet dans votre environnement de développement. Ce fichier ne doit pas être ajouté à votre contrôle de code source car il est spécifique à votre propre machine.
Le fichier settings.json
sera utilisé en production. C’est une bonne pratique d’avoir un settings.json.tmpl
qui ne contiendra que la structure du fichier settings.json
afin que vous puissiez le copier coller et ajouter les valeurs dont vous avez besoin dans votre environnement de développement local.
En effet, les fichiers sont chargés dans l’ordre où ils sont définis. Ce qui signifie que dans cet exemple, local.settings.json
sera remplacé par les valeurs settings.json
si elles sont présentes. Cette technique est utile lorsque vous souhaitez utiliser des valeurs locales de votre machine et les remplacer en production.
Si vous inversez les deux lignes comme ceci :
.AddJsonFile("settings.json", optional: true, reloadOnChange: true)
.AddJsonFile("local.settings.json", optional: true, reloadOnChange: true)
Les valeurs par défaut de settings.json
seront remplacées par celles local.settings.json
si vous en avez besoin. Cela peut être utilisé par exemple, si vous ciblez une URL par défaut vers votre environnement de développement en ligne et que vous souhaitez en cibler une autre sur votre machine locale en utilisant localhost
.
Pour les besoins de cet article, les fichiers JSON contiendront une définition d’une ApiUrl
:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "",
"FUNCTIONS_WORKER_RUNTIME": "dotnet"
},
"MyServerOptions": {
"ApiUrl": "http://localhost"
}
}
L’objet Values
et l’option IsEncrypted
que vous voyez ci-dessus sont des paramètres par défaut nécessaires pour que votre Azure Function démarre correctement.
Pour consommer la section MyServerOptions
nous allons définir une classe :
public class MyServerOptions
{
public string ApiUrl { get; init; }
}
Ensuite, nous créerons une méthode d’extension appelée AddAppConfiguration
où nous ajouterons toutes les configurations pour nos Azure Functions, ci-dessous, vous pouvez voir à quel point il est facile de charger la section MyServerOptions
:
internal static class ConfigurationServiceCollectionExtensions
{
public static IServiceCollection AddAppConfiguration(this IServiceCollection services, IConfiguration config)
{
services.Configure<MyServerOptions>(config.GetSection(nameof(MyServerOptions)));
return services;
}
}
Et utilisez-la ensuite dans la méthode Configure
comme nous l’avons vu précédemment :
public override void Configure(IFunctionsHostBuilder builder)
{
var configuration = BuildConfiguration(builder.GetContext().ApplicationRootPath);
builder.Services.AddAppConfiguration(configuration);
}
Vous savez maintenant comment utiliser les fichiers de paramètres dans vos Azure Functions en production ou dans un environnement local. Vous trouverez un exemple de code sur ce répertoire Github.
Happy codding !
Vous avez aimé ce tutoriel ? Laissez une étoile sur le répertoire Github associé !