Upload de fichiers depuis Linux vers Azure

Dans le cadre d’un projet de portage d’une application Fortran tournant sous Linux vers Azure HPC (projet sur lequel j’aurai l’occasion de communiquer plus en détails), je me suis heurté à une problématique qui, à priori, ne me semblait pas de nature à m’arrêter plus de quelques minutes…

Ayant généré des codes sources et des fichiers makefiles sur une VM Ubuntu déployée sur Azure, je souhaitais simplement les mettre à disposition sur mon Laptop Windows 8.

Pour ce faire, j’avais donc créé un container dans le stockage Azure, avec une Shared Access Signature provisoire permettant d’y écrire un fichier.

La création d’une Shared Access Signature est documentée dans le MSDN :

Une façon simple d’obtenir cette Shared Access Signature sans avoir à la construire par code est d’utiliser un outil comme Cloud Storage Studio de la société RedGate ou CloudXplorer de ClumsyLeaf Software.

SharedAccessSignature

La difficulté rencontrée est liée à la commande utilisée pour pouvoir faire un PUT dans le container ainsi créé. Je remercie mon collègue et ami Thomas Conté qui a trouvé le paramètre requis pour la “customization” des headers : H 'x-ms-blob-type: BlockBlob'.

La commande curl utilisée alors pour procéder à l’upload est alors la suivante :

curl -X PUT 'https://sharewithlinux.blob.core.windows.net/container/archiveifort.tar?sr=c&sv=2012-02-12&st=2013-04-15T20%3A59%3A36Z&se=2013-04-15T21%3A59%3A36Z&sp=rwdl&sig=w5Utqgs0GL70re%2Fu%2FHNN0QrkfxxuvWjlUHz0h4EXBR4%3D' -T archiveifort.tar -H 'x-ms-date:Mon, 15 Apr 2013 18:38:12 GMT' -H 'x-ms-version: 2012-02-12' -H 'x-ms-blob-type: BlockBlob' -v

Il suffit alors d’utiliser son browser pour récupérer le code à destination de Windows.