Skip to content
Sarawut Srichana - IT Portfolio
Go back

Migration de données on-premise vers Azure Blob Storage avec automatisation CLI

Table of Contents

Open Table of Contents

Résumé pour la direction

Scenario

L’équipe DevOps Nautilus met en œuvre une stratégie de migration de données visant à transférer des artefacts locaux on-premise vers des conteneurs Azure Blob Storage centralisés. L’objectif est de réduire la dépendance aux manipulations manuelles, de fiabiliser les transferts et de préparer un modèle reproductible pour des besoins futurs de migration ou d’archivage.

Dans ce cas précis, le fichier source local /tmp/nautilus.txt devait être envoyé vers le compte de stockage nautilusst9001, dans le conteneur nautilus-blob-26821, hébergé dans la région Central US. Cette opération répond à un besoin classique de centralisation des données, d’industrialisation des opérations et de transition vers des pratiques orientées automatisation.

Resolution

La migration a été réalisée avec succès via une approche en ligne de commande, sans recours à l’interface graphique. Le fichier local a été téléversé dans le conteneur Blob cible en établissant un modèle simple, scriptable et réutilisable.

La valeur métier apportée est double : d’une part, l’opération valide la capacité de l’équipe à exécuter des migrations unitaires vers Azure de manière fiable ; d’autre part, elle pose les bases d’un passage vers des mécanismes plus industrialisés pour des volumes plus importants, avec une meilleure gouvernance, une meilleure traçabilité et une meilleure sécurité d’accès.

Technical Implementation

Topology

The migration path was intentionally kept minimal and headless:

This topology supports a lightweight but production-aligned pattern for repeatable data transfer tasks. For a single-file upload, the command-line method is sufficient and easier to operationalize in CI/CD pipelines, automation jobs, or administrative runbooks.

Azure Configuration

Architectural Insight

GUI uploads are acceptable for one-off administrative tasks, but enterprise-scale data migrations should prefer Azure CLI, Azure PowerShell, or AzCopy for scriptability, high-throughput parallel processing, retry behavior, and better resilience across unstable networks.

Note

When possible, prefer Microsoft Entra ID authentication with --auth-mode login over Shared Access Keys. This improves security posture by reducing secret exposure and aligning access with identity-based controls and RBAC.

Action

The local artifact was uploaded directly to the target blob container using command-line automation. This avoided manual portal interaction and established a reusable Infrastructure as Code–friendly pattern for future migration tasks.

Azure CLI upload

The following example uses Microsoft Entra ID authentication with --auth-mode login:

#!/usr/bin/env bash
set -euo pipefail

STORAGE_ACCOUNT="nautilusst9001"
CONTAINER_NAME="nautilus-blob-26821"
SOURCE_FILE="/tmp/nautilus.txt"
BLOB_NAME="nautilus.txt"

az login

az storage blob upload \
  --auth-mode login \
  --account-name "$STORAGE_ACCOUNT" \
  --container-name "$CONTAINER_NAME" \
  --name "$BLOB_NAME" \
  --file "$SOURCE_FILE" \
  --overwrite trueupload-blob.sh

Azure PowerShell upload

This PowerShell example follows the same logic using an authenticated storage context:

$StorageAccount = "nautilusst9001"
$ContainerName = "nautilus-blob-26821"
$SourceFile = "/tmp/nautilus.txt"
$BlobName = "nautilus.txt"

Connect-AzAccount

$Context = New-AzStorageContext -StorageAccountName $StorageAccount -UseConnectedAccount

Set-AzStorageBlobContent `
  -Context $Context `
  -Container $ContainerName `
  -File $SourceFile `
  -Blob $BlobName `
  -ForceUpload-Blob.ps1

Validation

After execution, validate that the blob is present in the target container.

Azure CLI verification:

#!/usr/bin/env bash
set -euo pipefail

az storage blob list \
  --auth-mode login \
  --account-name "nautilusst9001" \
  --container-name "nautilus-blob-26821" \
  --output tableverify-blob.sh

Azure PowerShell verification:

$Context = New-AzStorageContext -StorageAccountName "nautilusst9001" -UseConnectedAccount

Get-AzStorageBlob `
  -Context $Context `
  -Container "nautilus-blob-26821"Verify-Blob.ps1
Success

The task demonstrates a successful shift from manual upload behavior to a scriptable cloud migration workflow that can be reused in scheduled jobs, DevOps pipelines, or larger data onboarding initiatives.


Share this post:

Previous Post
Provisionner un conteneur Blob Azure public avec accès anonyme
Next Post
Remédiation de l’exposition publique d’un conteneur Blob Azure en accès privé