How to enable your own persistent storage in Azure Spring Apps with the Standard consumption and dedicated plan
Azure Spring Apps is the new name for the Azure Spring Cloud service. Although the service has a new name, you'll see the old name in some places for a while as we work to update assets such as screenshots, videos, and diagrams.
This article applies to: ✔️ Standard consumption and dedicated (Preview) ❌ Basic/Standard ❌ Enterprise
This article describes how to enable your own persistent storage in Azure Spring Apps.
Your own storage and the built-in persistent storage in Azure Spring Apps differ in the following ways:
In built-in storage, artifacts generated by your application get uploaded into Azure Storage accounts. In your own storage, artifacts generated by your application get uploaded into a storage account that you control.
In built-in storage, Microsoft Azure controls the encryption-at-rest and the lifetime management policies for those artifacts. In your own storage, you control the encryption-at-rest policy, the lifetime management policy, and network access.
You can also mount your own persistent storage not only to Azure Spring Apps but to other service instances in the environment such as Azure Container Apps. This capability is possible because your Azure Spring Apps instance is deployed in the Azure Container Apps environment.
- An Azure subscription. If you don't have a subscription, create a free account before you begin.
- Azure CLI version 2.45.0 or higher.
- An Azure Spring Apps Standard consumption and dedicated plan service instance. For more information, see Quickstart: Provision an Azure Spring Apps Standard consumption and dedicated plan service instance.
- A Spring app deployed to Azure Spring Apps. For more information, see Quickstart: Build and deploy apps to Azure Spring Apps.
Set up the environment
Use the following commands to set the following variables to the names of your resources and current region setting.
export RESOURCE_GROUP="<resource-group-name>" export LOCATION="eastus" export AZURE_CONTAINER_APPS_ENVIRONMENT="<Azure-Container-Apps-environment-name>" export AZURE_SPRING_APPS_INSTANCE="<Azure-Spring-Apps-instance-name>" export APP_NAME="<Spring-app-name>"
Set up a storage account
Use the following steps to create a storage account and establish a file share to mount to the Spring app.
Create an Azure Storage account by using the following commands. The
STORAGE_ACCOUNT_NAMEvariable includes a randomly generated suffix to ensure uniqueness.
export STORAGE_ACCOUNT_NAME="myasastorageaccount$RANDOM" az storage account create \ --resource-group $RESOURCE_GROUP \ --name $STORAGE_ACCOUNT_NAME \ --location "$LOCATION" \ --kind StorageV2 \ --sku Standard_LRS \ --query provisioningState \ --enable-large-file-share
This command returns a success message upon successful completion.
Create the Azure Storage file share by using the following commands:
export FILE_SHARE_NAME="<file-share-name>" az storage share-rm create \ --resource-group $RESOURCE_GROUP \ --storage-account $STORAGE_ACCOUNT_NAME \ --name $FILE_SHARE_NAME \ --quota 1024 \ --enabled-protocols SMB \ --output table
Get the Storage Account key by using the following command:
export STORAGE_ACCOUNT_KEY=$(az storage account keys list \ --account-name $STORAGE_ACCOUNT_NAME \ --query ".value" \ --output tsv)
The storage account key is required to create the storage link in your Azure Container Apps environment.
Link the storage to the Azure Container Apps environment
Create the storage link in the Azure Container Apps environment by using the following commands. The
az containerapp env storage set command creates a link between the environment and the file share created with the
az storage share-rm command.
export STORAGE_MOUNT_NAME="<storage-account-name>" az containerapp env storage set \ --resource-group $RESOURCE_GROUP \ --name $AZURE_CONTAINER_APPS_ENVIRONMENT \ --storage-name $STORAGE_MOUNT_NAME \ --azure-file-account-name $STORAGE_ACCOUNT_NAME \ --azure-file-account-key $STORAGE_ACCOUNT_KEY \ --azure-file-share-name $FILE_SHARE_NAME \ --access-mode ReadWrite \ --output table
Now that the storage account and environment are linked, you can use the storage mount in your Azure Spring Apps instance.
Add storage to an app
Add the persistent storage to your existing app by using the following command:
az spring app append-persistent-storage \ --resource-group $RESOURCE_GROUP \ --service $AZURE_SPRING_APPS_INSTANCE \ --name $APP_NAME \ --persistent-storage-type AzureFileVolume \ --mount-path /var/log/nginx \ --storage-name $STORAGE_MOUNT_NAME
Clean up resources
Be sure to delete the resources you created in this article when you no longer need them. To delete the resources, just delete the resource group that contains them. You can delete the resource group using the Azure portal. Alternatively, to delete the resource group by using Azure CLI, use the following commands:
echo "Enter the Resource Group name:" && read resourceGroupName && az group delete --name $resourceGroupName && echo "Press [ENTER] to continue ..."