Skip to main content

Globally Distributed Serverless URL Shortener Using Azure Functions and Cosmos DB

Multi-region deployment of Azure Functions and Cosmos DB with Traffic Manager

This example lives in the pulumi/examples repository. Check out just this directory to use it:

Get started with this example
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examples
git -C pulumi-examples sparse-checkout set classic-azure-ts-serverless-url-shortener-global
cd pulumi-examples/classic-azure-ts-serverless-url-shortener-global

Multi-region deployment of Azure Functions and Cosmos DB with Traffic Manager

Running the App#

  1. Create a new stack:

    Terminal window
    pulumi stack init dev
  2. Login to Azure CLI (you will be prompted to do this during deployment if you forget this step):

    Terminal window
    az login
  3. Restore NPM dependencies:

    Terminal window
    npm install
  4. Specify the Azure subscription and regions to deploy the application:

    Terminal window
    pulumi config set locations westus,westeurope
    pulumi config set azure:subscriptionId <YOUR_SUBSCRIPTION_ID>
  5. Run pulumi up to preview and deploy changes:

    Terminal window
    pulumi up
    Previewing changes:
    ...
    Performing changes:
    ...
    info: 23 changes performed:
    + 23 resources created
    Update duration: 21m33.3252322s
  6. Add a short URL:

    Terminal window
    pulumi stack output addEndpoint
    https://urlshort-add94ac80f8.azurewebsites.net/api/urlshort-add
    curl -H "Content-Type: application/json" \
    --request POST \
    -d '{"id":"pulumi","url":"https://pulumi.com"}' \
    "$(pulumi stack output addEndpoint)"
    Short URL saved
  7. Query a short URL:

    Terminal window
    pulumi stack output endpoint
    http://urlshort-tm.trafficmanager.net/api/
    curl -L $(pulumi stack output endpoint)pulumi
    <!doctype html>
    <html lang="en-US" prefix="og: http://ogp.me/ns#">
    <head>
    <title>
    Pulumi
    </title>
    ...

Related

The infrastructure as code platform for any cloud.