Comment connecter Azure Functions à Google Analytics

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 Recherche Azure

 

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

  • Dans le champ Name, vous y placerez le nom de votre secret, ce nom sera communiqué à vos développeurs.
  • Dans le champ Valeur, votre secret.
  • Les autres champs sont optionnels.

 

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.

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.

Partager cette publication