Comment connecter Azure Functions à Google Analytics
Cet article propose une méthode permettant de lire vos données provenant de Google Analytics avec une Azure Functions. Mais c’est surtout une excuse pour présenter par l’usage deux briques Azure : Azure Functions et Azures Key Vault.
Introduction
Présentation très rapide/simpliste des Azure functions:
- Il s’agit d’un module permettant de développer un programme sans avoir à gérer la couche Serveur, ce qui permet de se concentrer sur la logique du code sans avoir à soucier de la couche base.
- une documentation complète est disponible ici : https://docs.microsoft.com/fr-fr/azure/azure-functions/
L’architecture de notre mini-solution est la suivante :
On voit que notre Azure Functions est au cœur du dispositif. Mais en plus de 2 éléments évoqués précédemment, nous avons un autre module le Key Vault.
- Le Key Vault peut être vu comme le coffre-fort Azure. D’ailleurs, nous allons y copier nos informations de connexion Google (Compte, et clé). Un des avantages d’utiliser Key Vault et de ne pas cloisonner l’information.
- par exemple, les équipes de développement n’auront pas à connaitre le mot de passe (et encore moins à l’écrire dans le code) ils ont juste besoin d’une référence.
- Les mots de passe peuvent être modifiés sans aucun impact sur les applications
Vous trouverez une documentation complète sur : https://docs.microsoft.com/fr-fr/azure/key-vault/).
Pour que cela fonctionne, il faut donner le droit à l’Azure Functions d’accéder au Key Vault. Nous allons évoquer ici la méthode, mais pour plus d’informations allez sur https://docs.microsoft.com/en-gb/azure/active-directory/managed-identities-azure-resources/overview.
Création des éléments
Étapes
Création du Key Vault
1) Dans la barre de recherche, tapez : Key Vault | ![]() |
|
|
2) Puis Add | ![]() |
|
|
3) Renseignez les différents champs | ![]() |
|
|
4) Et finaliser en cliquant sur Create |
Une fois que le Key Vault est créé, nous allons ajouter les informations de notre compte Google,
1) ouvrez votre coffre | ![]() |
|
|
Sélectionner : ‘Secret’ puis | ![]() |
|
|
Remplissez le formulaire
|
![]() |
|
Pour notre scénario nous aurons deux secrets :
Nom | Valeur |
AccountGA | xxxx@yyy.iam.gserviceaccount.com |
privateKeyGA | { « type »: « service_account », « project_id »:…. } |
Création de l’Azure Function
Deux possibilités pour créer une Azure Function : via le portail ou avec VisualStudio. Nous allons utiliser VisualStudio pour vous permettre d’utiliser simplement le code source disponible sur https://github.com/agencethelio/Azure/tree/master/Functions/Thelio.Connect.Google
Le code se présente comme n’importe quelle solution C#
Nous en détaillerons quelques parties par la suite. Pour l’instant nous allons simplement publier notre fonction dans Azure.
1) Cliquez avec le bouton droit sur la solution pour avoir le menu Publish | ![]() |
|
|
2) Ce menu vous propose un assistant (choisir Create new) | ![]() |
|
|
3) Cliquez sur publish | ![]() |
|
|
4) Remplissez les différents champs puis cliquez sur Create. En fin de traitement vous avez cet écran : |
![]() |
|
Voilà votre fonction est sur Azure
En l’état, vous pouvez vérifier que la fonction est active en tapant l’URL suivante
https://<nom_de_votre_fonction>.azurewebsites.net/
normalement votre page devrait être la suivante
Si c’est le cas, nous allons passer à l’étape suivante.
Mise en place des connexions
Nous allons aller sur la page de configuration de votre Functions, en cliquant sur son nom. Votre écran sera semblable à celui-ci :
Vous allez activer le MSI (Managed service identity), c’est par son biais que notre function pourra accéder aux Key Vault.
Pour ce faire:
1) cliquez sur Platform features puis Managed service identity | ![]() |
|
|
2) Cliquez sur On, si ce n’est pas son état (sans oublier le bouton Save) comme le montre l’écran ci-contre | ![]() |
|
|
3) Ceci étant fait, retournons dans notre Key Vault. Pour sélectionner l’option Access control (IAM) | ![]() |
|
|
4) Afin d’ajouter notre fonction et lui donner le droit de lire nos secrets | |
5) Cliquez sur ![]() |
|
|
|
6) Sélectionner le rôle : Reader 7) Puis taper le nom de votre fonction dans select 8) Quand votre fonction apparait dans la liste, cliquez dessus puis sur Save. |
![]() |
Cette action a pour effet de permettre à votre fonction de lire les éléments du Key Vault.
Si nous voulions faire la même opération pour un Data Lake, les opérations auraient été similaires.
1) Pour le Data Lake, il faut sélectionner l’option Data explorer | ![]() |
2) Puis Access | ![]() |
3) et add, et ensuite taper le nom de la fonction. Finaliser la première étape en cliquant sur le select |
![]() |
4) La seconde étape consiste à définir les permissions | ![]() |
Après avoir validé vos choix, votre fonction aura accès à votre datalake.
Explication de code
Les étapes précédentes ont permis d’avoir les éléments Azure et la sécurisation de la chaine. Maintenant nous allons voir qu’il n’y a pas forcement de grande complexité à utiliser Key Vault.
Si vous avez suivi les étapes, vous avez peut-être cloné le code de la démo (https://github.com/agencethelio/Azure/tree/master/Functions/Thelio.Connect.Google)
Quelques extraits :
Fonction de base
private static string Env(string name) => Environment.GetEnvironmentVariable(name,
EnvironmentVariableTarget.Process);
Cette fonction permet de récupérer la valeur d’un paramètre stocké dans la configuration d’une azure Function comme le montre la capture ci-dessous
Les paramètres spécifiques sont dans capture AzureWebJobsStorage, keyVaultAddress et project_id.
Connexion au Key Vault
Ci-dessous un exemple de code permettant d’accéder à un secret (avec le parametre secretName). Avec la lecture de l’adresse keyVaultAddress.
Connexion à Google
La ligne suivante
var credential_google = GoogleCredential.FromJson(_jsonCertificat).CreateScoped(scopes);
utilise le fichier de certificat Json que vous avez créer en suivant le tutoriel https://www.thelio.fr/tutoriel-creer-un-compte-google-analytics/ et stocké dans Key Vault.
Ci-dessous vous avez le code de la fonction permettant la récupération du rapport de GoogleAnalytics.
https://gist.github.com/agencethelio/3c3041c9b801e9e5baf218272dba81d6
Vous avez pu voir que rien n’était vraiment compliqué. Donc plus d’excuses pour ne pas utiliser Key Vault et/ou Azure Functions qui n’a été qu’effleuré dans cet article.
Laisser un commentaire