#Azure - Credentials

The Serverless Framework needs access to Azure account credentials so that it can create and manage resources on your behalf.

#Create an Azure Account

Azure provides a hosted serverless computing solution based upon Azure Functions.

If you don't have an Azure account, get started by signing up for a free account, which includes \$200 of free credit

#Interactive Login

Upon running $ serverless deploy, you will automatically be prompted to login via your browser. Simply follow the instructions.

#Authenticating with a Service Principal

For anything more than just experimenting with the plugin, it is recommended to use a service principal. Below are steps on creating one:

Note: If you're using non-public Azure, such as national clouds or Azure Stack, be sure you set your Azure endpoint before logging in.

#1. Download the Azure CLI or use the Azure Cloud Shell
#2. Login to Azure
$ az login

This will give you a code and prompt you to visit aka.ms/devicelogin.

#3. Get your subscription and tenant id
$ az account list
  "cloudName": "AzureCloud",
  "id": "<subscriptionId>",
  "isDefault": true,
  "name": "My Azure Subscription",
  "registeredProviders": [],
  "state": "Enabled",
  "tenantId": "5bc10873-159c-4cbe-a7c9-bce05cb065c1",
  "user": {
    "name": "hello@example.com",
    "type": "user"

If you have multiple accounts, you can specify the "current" subscription for the session by running

$ az account set -s <subscriptionId>
#4. Create a service principal
$ az ad sp create-for-rbac

This will yield something like:

  "appId": "19f7b7c1-fc4e-4c92-8aaf-21fffc93b4c9",
  "displayName": "azure-cli-1970-01-01-00-00-00",
  "name": "http://azure-cli-1970-01-01-00-00-00",
  "password": "48d82644-00f2-4e64-80c5-65192f9bb2d0",
  "tenant": "16f63fe8-17db-476f-b2b3-ba3752a03a33"

Save this somewhere secure.

#5. Set up environment variables

Add the following environment variables to the shell session or CI/CD tool that will be used for deployment of your Azure Function App:

# bash
export AZURE_SUBSCRIPTION_ID='<subscriptionId>' # From step 3
export AZURE_TENANT_ID='<tenant>'
export AZURE_CLIENT_ID='<name>'
export AZURE_CLIENT_SECRET='<password>'
# PowerShell
$env:AZURE_SUBSCRIPTION_ID='<subscriptionId>' # From step 3

Have questions?

Head over to the forums to search for your questions and issues or post a new one.