How Quickly Upload Files from URL to Azure Blob Storage Using Azure CLI in 2 steps

Content

The Azure CLI's az storage blob upload command lets you upload local files to Azure Blob Storage. However, sometimes it’s more convenient to upload a file directly from an HTTP(S) URL to Azure Blob Storage. Unfortunately, the Azure CLI doesn’t support this directly—you need to download the file locally first. This article explores using Bash and PowerShell commands to download a file from a URL and then upload it to Azure Blob Storage. Plus, if you use these commands in the Azure Cloud Shell, you won’t have to worry about your local network’s bandwidth speeds or limits, which is great for uploading large files.

How to Upload Files from a URL to Azure Blob Storage?

Let's start by looking at how to upload a file to Azure Blob Storage using the Azure CLI. In this scenario, we have a file hosted online, accessible via an HTTP(S) URL. Our goal is to take this URL and upload the file to Azure Blob Storage.

1. Download the File(s)

Before uploading the file to Azure Blob Storage, we need to download it. You can do this using `wget` or `curl` in bash, or Invoke-WebRequest in PowerShell.

Invoke-WebRequest -Uri "https://example.com/documents/files.zip" -OutFile "docfiles.zip"

2. Uploading the File to Azure Blob Storage

With the file downloaded, we can now upload it to Azure Blob Storage using the Azure CLI's az storage blob upload command.

az storage blob upload --account-name \ --account-key \ --container-name \ --name \ --file "docfiles.zip"

Make sure to set the command arguments correctly for your Azure Blob Storage account:

  • --account-name – name of your Azure Storage account
  • --account-key – key for your Azure Storage account, used for authentication
  • --container-name – name of the container within your Azure Storage account where the blob will be uploaded
  • --name – name you want to give the blob, which can be different from the local file name
  • --file – path and name of the local file you want to upload to blob storage.

2.1 Delete the File

After uploading the downloaded file to Azure Blob Storage, you can delete the local copy from your machine (or from Azure Cloud Shell if you used it).

Remove-Item -Path "docfiles.zip"

  • or - BASH: rm "docfiles.zip"

3. Bash/Powershell scripts to automate file upload from HTTP(S) URL to Azure Blob Storage

Conclusion

In this article, we explored how to upload a file with a known HTTP(S) URL to an Azure Blob Storage container. Although the Azure CLI can’t directly upload from a URL, you can first download the file locally and then use the CLI to upload it to Azure Blob Storage. Additionally, running these commands in Azure Cloud Shell saves your local network bandwidth.

Summary
The Azure CLI does not directly support uploading files from HTTP(S) URLs to Azure Blob Storage, requiring the file to be downloaded locally first. This article discusses using Bash and PowerShell commands to download a file from a URL and then upload it to Azure Blob Storage. By utilizing these commands in Azure Cloud Shell, concerns about local network bandwidth speeds or limits are eliminated, especially beneficial for large file uploads. The process involves downloading the file using wget, curl, or Invoke-WebRequest, and then uploading it to Azure Blob Storage using the az storage blob upload command with specific arguments for account name, key, container name, blob name, and file path. After uploading, the local file can be deleted. The article provides Bash and PowerShell scripts for automating this process, offering a workaround for uploading files from HTTP(S) URLs to Azure Blob Storage via local download and CLI upload.