Prerequisites

  1. Create an Azure account.
  2. Set up Azure CLI
  3. Install the Azure Functions Core Tools

Project Setup

Initialize the project:

func init --typescript

Install @upstash/redis

npm install @upstash/redis

Counter Function Setup

Create a new function from template.

func new --name CounterFunction --template "HTTP trigger" --authlevel "anonymous"

Update /src/functions/CounterFunction.ts

/src/functions/CounterFunction.ts
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";
import { Redis } from "@upstash/redis";

const redis = new Redis({
    url: process.env.UPSTASH_REDIS_REST_URL,
    token: process.env.UPSTASH_REDIS_REST_TOKEN
});

export async function CounterFunction(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    const count = await redis.incr("counter");

    return { status: 200, body: `Counter: ${count}` };
};

app.http('CounterFunction', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    handler: CounterFunction
});

Create Azure Resources

You can use the command below to find the name of a region near you.

az account list-locations

Create a resource group.

az group create --name AzureFunctionsQuickstart-rg --location <REGION>

Create a storage account.

az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group AzureFunctionsQuickstart-rg --sku Standard_LRS --allow-blob-public-access false

Create your Function App.

az functionapp create --resource-group AzureFunctionsQuickstart-rg --consumption-plan-location <REGION> --runtime node --runtime-version 18 --functions-version 4 --name <APP_NAME> --storage-account <STORAGE_NAME>

Database Setup

Create a Redis database using Upstash Console or Upstash CLI and set UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN in your Function App’s settings.

az functionapp config appsettings set --name <APP_NAME> --resource-group AzureFunctionsQuickstart-rg --settings UPSTASH_REDIS_REST_URL=<YOUR_URL> UPSTASH_REDIS_REST_TOKEN=<YOUR_TOKEN>

Deploy

Take a build of your application.

npm run build

Publish your application.

func azure functionapp publish <APP_NAME>

Visit the given Invoke URL.