Skip to content

Instantly share code, notes, and snippets.

@nilaydshah
Created August 23, 2024 23:06
Show Gist options
  • Save nilaydshah/333cb5e2a80678a3ce4df1daaf864f9b to your computer and use it in GitHub Desktop.
Save nilaydshah/333cb5e2a80678a3ce4df1daaf864f9b to your computer and use it in GitHub Desktop.
Sample script to create storage accounts, containers, blobs
# Create two resource groups.
# Create 10 storage accounts (5 in each resource group).
# For each storage account, create 5 containers.
# Generate a random 1GB file.
# Upload the file to each container in all storage accounts.
# Pre-reqs perform az login
# az account set --subscription "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
# create empty file named "random1GBfile.bin" in current folder
# review the variables and update them as needed
# Variables
$resourceGroup1 = "ResourceGroup1"
$resourceGroup2 = "ResourceGroup2"
$location = "eastus"
$storageAccountPrefix = "mystorageaccount"
$containerPrefix = "container"
$fileName = "random1GBfile.bin"
# Create resource groups
az group create --name $resourceGroup1 --location $location
az group create --name $resourceGroup2 --location $location
# Create a random 1GB file
$randomData = New-Object byte[] (1GB)
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($randomData)
[IO.File]::WriteAllBytes($fileName, $randomData)
# Function to create storage accounts and containers
function Create-StorageAccountsAndContainers {
param (
[string]$resourceGroup,
[int]$startIndex
)
for ($i = $startIndex; $i -lt ($startIndex + 5); $i++) {
$storageAccountName = "${storageAccountPrefix}${i}"
# Create storage account with anonymous access restricted
az storage account create --name $storageAccountName --resource-group $resourceGroup --location $location --sku Standard_LRS --allow-blob-public-access false
# Get storage account key
$accountKey = az storage account keys list --resource-group $resourceGroup --account-name $storageAccountName --query '[0].value' --output tsv
# Create containers and upload file
for ($j = 1; $j -le 5; $j++) {
$containerName = "${containerPrefix}${j}"
# Create container
az storage container create --name $containerName --account-name $storageAccountName --account-key $accountKey
# Upload file to container
az storage blob upload --container-name $containerName --file $fileName --name $fileName --account-name $storageAccountName --account-key $accountKey
}
}
}
# Create storage accounts and containers in both resource groups
Create-StorageAccountsAndContainers -resourceGroup $resourceGroup1 -startIndex 1
Create-StorageAccountsAndContainers -resourceGroup $resourceGroup2 -startIndex 6
# Clean up the random file
Remove-Item $fileName
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment