Développement

join multi-fichiers CSV

Récemment, j'ai dû assembler le contenu de plusieurs fichiers CSV en effectuant une jointure sur une clé unique pour chaque ligne. Contexte Les fichiers se composent de 2 colonnes. La première est une clé et la seconde une valeur quelconque. Les clés ne sont pas toutes présentes dans chaque fichier. Les lignes de ces fichiers peuvent être triées par ordre alphabétique sur la clé. Pour information, le séparateur de champ utilisé est la virgule. De plus, les fichier ne contiennent…
Lire d'avantage
Développement

Serverless Framework débarque chez Google Cloud

Récemment, Serverless Framework a annoncé le support des Google Cloud Functions. Même s'il était possible de déployer simplement des Google Cloud Functions via le CLI officiel, ce framework permet d'industrialiser le processus de développement et déploiement des fonctions. Reprenons notre classique exemple et voyons comment le déployer avec ce nouveau couple. La Google Cloud Function Sans surprise, l'initialisation du projet se fait de cette façon : $ serverless create --template google-nodejs --path my-service Serverless: Generating Serverless: Generating boilerplate in "C:\Users\pnom\serverless\google\my-service"…
Lire d'avantage
Développement

A la découverte de Webtask

Dans l'univers des Function as a Service, il existe un fournisseur qui commence à être connu. Il se nomme auth0 et propose sa propre solution d'exécution de fonction : Webtask. Très orienté webhook, ce service offre quelques fonctionnalités intéressantes et la mise en œuvre semble plutôt simple. Les langages supportés sont , Express et C#. Reprenons l'exemple simple utilisé pour découvrir Serverless Framework. Installation L'installation du Webtask CLI nécessite NPM et s'exécute avec la ligne de commande suivante : $…
Lire d'avantage
Développement

Premiers pas avec Azure Functions

Oui, vous ne rêvez pas. Nous allons parler aujourd'hui de Microsoft Azure. Et plus particulièrement du service Azure Functions qui permet d'exécuter du code. Les fonctions Azure peuvent être déclenchées sur réception d'un événement Azure (Blob Storage, Table Storage, Azure DocumentDB, Bot Framework, ordonnanceur, HTTP, ...) ou externe (Box, DropBox, OneDrive, SendGrid, ...). Actuellement, les langages supportés sont le C#, F# et Javascript. Comme nous sommes sur des outils Microsoft, nous allons utiliser les interfaces graphiques fournies. Mais il faut…
Lire d'avantage
Développement

Serverless Framework – créer une API REST avec DynamoDB

Lors du précédent article, nous avons vu comment créer une API serverless avec Serverless Framework. Pour implémenter une API REST, il faut pouvoir persister les données dans une base de données. AWS propose une base de données NoSQL scalable sans avoir à gérer d'instance. En d'autres termes, une base de données dans l'esprit serverless : DynamoDB. Au travers des templates Cloud Formation, Serverless Framework supporte DynamoDB. Nous allons donc voir comment créer étape par étape une API REST de messages.…
Lire d'avantage
Développement

Serverless Framework ou l’API Gateway facile

Nous venons de découvrir comment Serverless Framework permet de déployer simplement une fonction sur AWS Lambda. Ce framework supporte également l'API Gateway d'AWS. Or, nous avions déjà vu comment exposer une fonction Lambda avec l'API Gateway. Voyons maintenant comment le faire avec ce framework. La fonction Lambda Pour rappel, vous pouvez initier un nouveau projet serverless avec la commande suivante : $ serverless create --template aws-nodejs --name hello-world Ensuite, voici la fonction lambda à exposer et qui doit se trouver…
Lire d'avantage
Développement

Premiers pas avec Serverless Framework

Il y a quelques temps, nous avions découvert comment déployer du code sur AWS Lambda. Même si ce déploiement est assez simple, il y a quelques opérations annexes à faire pour configurer la sécurité ou les traces applicatives par exemple. De plus, le déploiement unitaire de fonctions a pour conséquence de multiplier le nombre de commandes à exécuter. Heureusement pour nous, il existe un framework qui permet d'augmenter notre productivité quand on souhaite monter une architecture serverless sur AWS (pour…
Lire d'avantage
Développement

Traitement automatique de fichiers avec AWS Lambda et S3

L'une des forces d'AWS Lambda c'est son intégration avec les autres services d'AWS. Plus particulièrement, la capacité de déclencher l'exécution d'une fonction Lambda à partir d'un événement d'un service tiers est une fonctionnalité très intéressante qui permet d'enrichir ces services. Un cas d'usage classique est par exemple le traitement automatique d'images déposées dans un bucket S3. Dans ce cas, la fonction Lambda peut redimensionner l'image, convertir le format, appliquer un watermark, appliquer des contrôle de contenu, Comme ce cas a…
Lire d'avantage
Développement

Gestionnaire de téléchargement avec AWS Lambda et S3

Récemment, nous avons vu comment déployer du code sous forme de fonction Lambda et comment les exposer sous forme d'API sur Internet. Mais que peut-on faire vraiment avec ce code ? Pourquoi ne pas faire un gestionnaire de téléchargement ? L'idée est de créer une fonction Lambda qui va lancer un téléchargement (d'une page HTML dans l'exemple) et stocker le résultat dans un bucket S3 pour le consulter plus tard. Implémentation Le code de cette fonction est assez simple :…
Lire d'avantage
Développement

MSYS – éviter l’évaluation des arguments comme des chemins

Si vous êtes sous MS Windows et que vous faites du Bash ou autres scripts en ligne de commandes, vous utilisez sûrement MSYS. Dans ce cas, n'avez-vous pas rencontré quelques difficultés avec des paramètres commençant par le caractère "/" ? Par exemple, avec Docker : $ docker run -w /tmp ubuntu ls -la docker: Error response from daemon: The working directory 'C:/Users/pnom/AppData/Local/Temp' is invalid. It needs to be an absolute See 'C:\Program Files\Docker Toolbox\ run --help'. Celà vient du fait…
Lire d'avantage