Retrieving API Fields from an Azure Static Web App Using a Bash Script

Learn to automate retrieving detailed config info from Azure Static Web Apps using a simple Bash script!

Retrieving API Fields from an Azure Static Web App Using a Bash Script
Retrieving API Fields from an Azure Static Web App Using a Bash Script

Azure Static Web Apps provide a streamlined full-stack development experience for static site hosting and serverless API endpoints. If you need to retrieve detailed configuration information about your Azure Static Web App, you can use the Azure CLI combined with a simple Bash script to automate this task. 

In this blog post, I'll walk you through a Bash script that retrieves all the API fields from an Azure Static Web App.

Prerequisites

Before running the script, ensure you have the following:

The Bash Script

Below is the Bash script that retrieves all the API fields from an Azure Static Web App.

#!/bin/bash

# Variables
subscriptionId="<subscriptionId>"
resourceGroup="<resourceGroup>"
appName="<appName>"
apiVersion="2023-12-01"

# Get the access token using Azure CLI
echo "Retrieving access token..."
accessToken=$(az account get-access-token --query accessToken --output tsv)
if [ -z "$accessToken" ]; then
    echo "Error: Unable to retrieve access token. Make sure you are logged in with Azure CLI."
    exit 1
fi

# URL for the GET request
url="https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.Web/staticSites/${appName}?api-version=${apiVersion}"

echo "Making GET request to URL: $url"

# Make the GET request and store the response
response=$(curl -s -w "\nHTTP_STATUS_CODE:%{http_code}" -X GET "$url" \
    -H "Authorization: Bearer $accessToken" \
    -H "Content-Type: application/json")

# Extract HTTP status code from response
http_status=$(echo "$response" | tail -n1 | sed 's/.*HTTP_STATUS_CODE://')

# Extract the response body
response_body=$(echo "$response" | sed '$d')

# Check the HTTP status code
if [ "$http_status" -ne 200 ]; then
    echo "Error: Received HTTP status code $http_status"
    echo "Response body: $response_body"
    exit 1
fi

# Print the entire response body
echo "Response body:"
echo "$response_body" | jq .

Script Explanation

Let's take a look at what each section of the script means.

Variable Definitions: The script starts by defining the variables 'subscriptionId', 'resourceGroup', 'appName', and 'apiVersion'. Replace the placeholders with your actual Azure subscription ID, resource group name, and app name.

Access Token Retrieval

accessToken=$(az account get-access-token --query accessToken --output tsv)

The script retrieves an access token using the Azure CLI. This token is required for authentication when making API requests to Azure.

URL Definition:

url="https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.Web/staticSites/${appName}?api-version=${apiVersion}"

 The script constructs the URL for the GET request using the provided subscription ID, resource group, app name, and API version.

Making the GT Request:

response=$(curl -s -w "\nHTTP_STATUS_CODE:%{http_code}" -X GET "$url" \
-H "Authorization: Bearer $accessToken" \
-H "Content-Type: application/json")

The script makes a GET request to the constructed URL using `curl`. The `-s` flag suppresses progress output, and `-w "\nHTTP_STATUS_CODE:%{http_code}"` appends the HTTP status code to the response.

HTTP Status Code Handling:

http_status=$(echo "$response" | tail -n1 | sed 's/.*HTTP_STATUS_CODE://')
response_body=$(echo "$response" | sed '$d')

 The script extracts the HTTP status code and the response body from the `curl` output. If the HTTP status code is not 200, it prints an error message and exits.

Printing the Response:

echo "$response_body" | jq .

The script uses jq to pretty-print the JSON response body, which contains all the API fields of the Azure Static Web App.

Running the Script

  • Open your web browser.
  • Navigate to https://shell.azure.com/
  • Log in with your Azure account credentials.
    •   - If you don't have an account, you will need to create one.
Azure Cloud Shell
Azure Cloud Shell
  • Select the Bash environment (if prompted to choose between Bash and PowerShell).
  • To create a new file to store your script in, type the following command and press Enter:
touch get_static_web_app_details.sh

Azure Cloud Shell
Azure Cloud Shell
  • To open the VS Code editor built into the Azure Cloud Shell, type in the following command:
code get_static_web_app_details.sh
  • Copy your bash script from above into the new file you've created.
Azure Cloud Shell
Azure Cloud Shell
  • After pasting your script, save the file by using the command Ctrl + S (Cmd + S on Mac).
  • To close VSCode and return to the Bash shell, use the command Ctrl + Q.

We now need to make the file executable within our environment. Type in the following command:

chmod +x get_static_web_app_details.sh

It's now time to run the script, we can do this by typing the command:

./get_static_web_app_details.sh
Azure Cloud Shell
Azure Cloud Shell

Conclusion

This Bash script provides a simple and effective way to retrieve all the API fields from your Azure Static Web App. By leveraging the Azure CLI and `curl`, you can automate the retrieval of detailed configuration information, which can be helpful for monitoring, troubleshooting, or documenting your web app's setup.