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

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": "",
    "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
Go to Github