GitHub Repository

You can find the project source code on GitHub.

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.