Globally Distributed Serverless URL Shortener Using Azure Functions and Cosmos DB | TypeScript

View Code Deploy

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

Running the App

  1. Create a new stack:

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

    $ az login
  3. Restore NPM dependencies:

    $ npm install
  4. Specify the Azure regions to deploy the application:

    $ pulumi config set locations westus,westeurope
  5. Run pulumi up to preview and deploy changes:

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

    $ pulumi stack output addEndpoint
    $ curl -H "Content-Type: application/json" \
        --request POST \
        -d '{"id":"pulumi","url":""}' \
        "$(pulumi stack output addEndpoint)"    
    Short URL saved
  7. Query a short URL:

    $ pulumi stack output endpoint
    $ curl -L $(pulumi stack output endpoint)pulumi
    <!doctype html>
    <html lang="en-US" prefix="og:">