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:
git clone --filter=blob:none --sparse https://github.com/pulumi/examples pulumi-examplesgit -C pulumi-examples sparse-checkout set classic-azure-ts-serverless-url-shortener-globalcd pulumi-examples/classic-azure-ts-serverless-url-shortener-globalMulti-region deployment of Azure Functions and Cosmos DB with Traffic Manager
Running the App#
-
Create a new stack:
Terminal window pulumi stack init dev -
Login to Azure CLI (you will be prompted to do this during deployment if you forget this step):
Terminal window az login -
Restore NPM dependencies:
Terminal window npm install -
Specify the Azure subscription and regions to deploy the application:
Terminal window pulumi config set locations westus,westeuropepulumi config set azure:subscriptionId <YOUR_SUBSCRIPTION_ID> -
Run
pulumi upto preview and deploy changes:Terminal window pulumi upPreviewing changes:...Performing changes:...info: 23 changes performed:+ 23 resources createdUpdate duration: 21m33.3252322s -
Add a short URL:
Terminal window pulumi stack output addEndpointhttps://urlshort-add94ac80f8.azurewebsites.net/api/urlshort-addcurl -H "Content-Type: application/json" \--request POST \-d '{"id":"pulumi","url":"https://pulumi.com"}' \"$(pulumi stack output addEndpoint)"Short URL saved -
Query a short URL:
Terminal window pulumi stack output endpointhttp://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
TemplateAzure
Azure Serverless Application
TemplateAWS