With the native Azure provider we can directly use the Azure resource manager API to define API connections and linking it to a logic app. The resulting experience is much faster in comparison to performing the same operation through ARM templates.
-
Create a new stack:
$ pulumi stack init dev
-
Create a Python virtualenv, activate it, and install dependencies:
This installs the dependent packages needed for our Pulumi program.
$ python3 -m venv venv $ source venv/bin/activate $ pip3 install -r requirements.txt
-
Set the required configuration variables for this program, and log into Azure:
$ pulumi config set azure-native:location westeurope $ az login
-
Perform the deployment:
$ pulumi up Type Name Status + pulumi:pulumi:Stack azure-cosmosdb-logicapp-dev created + ├─ azure-native:resources:ResourceGroup logicappdemo-rg created + ├─ azure-native:storage:StorageAccount logicappdemosa created + ├─ azure-native:documentdb:DatabaseAccount logicappdemo-cdb created + ├─ azure-native:documentdb:SqlResourceSqlDatabase db created + ├─ azure-native:web:Connection cosmosdbConnection created + ├─ azure-native:documentdb:SqlResourceSqlContainer container created + └─ azure-native:logic:Workflow workflow created Resources: + 8 created Duration: 3m16s
-
At this point, you have a Cosmos DB collection and a Logic App listening to HTTP requests. You can trigger the Logic App with a
curl
command:$ curl -X POST "$(pulumi stack output endpoint)" -d '"Hello World"' -H 'Content-Type: application/json'
The POST body will be saved into a new document in the Cosmos DB collection.
-
Once you are done, you can destroy all of the resources, and the stack:
$ pulumi destroy $ pulumi stack rm