When it comes to deploying my infrastructure to Azure I prefer an imperative approach over a declarative approach so I starting to work a lot with Azure CLI and Azure PowerShell. That being said, I am working on an Web App which will be deployed to an App Service in Azure. When I deploy the…
Category: Azure
Adventures with Azure: Security, Azure App Services and Azure API Management
In previous article we looked at how to secure an Azure Function with Azure API Management, in an effort to only allow resources within the Azure tenant access. Could the same thing be done with a Web Api hosted in App Services? Surprisingly, it was just as easy to implement. You setup Express Auth through…
Adventures with Azure: Security, Azure Functions and Azure API Management
In this article I want to revisit securing an Azure Function so that it cannot be called directly, but can be called by Azure API Management. To do this, I am going to leverage Managed Identities and make use of this in my API Management policy. I know I could do this with IP white…
Adventures with Durable Functions: Error Handling and Retries
Normally I use, and recommend, Logic Apps for orchestration, but I recently had an ask for sample code of a Durable Function that demonstrated error handling and retry logic. The code for this article can be found at https://github.com/mattruma/MJR047. Using the Azure Storage Emulator I created two queues, one called sayhello and another called sayhello-poison,…
Adventures with Logic Apps: Handling Optional Query Parameters
Ran into an interesting issue challenge with Logic Apps. My Logic App sometimes takes a query parameter called planId. I use the value of planIdto determine whether I should Insert or Update a record in a database. If planId is not provided the statement triggerBody()[‘queries][‘planId’] generates an exception. This was very frustrating to figure out…
Adventures with Azure: Azure SQL and Access Tokens
In this series of articles we will access an Azure SQL database using an access token provided by Azure AD. Why would we even want to do this? Doing it this way means we DO NOT have to provide a User Id and Password in our connection string. In Part 1 we will create the…
Adventures with Azure Cosmos DB: Limit Query RUs
If you have worked any with Azure Cosmos DB you are well aware of Request Units, or RUs. What exactly are RUs and how do they work? The cost of all database operations is normalized by Azure Cosmos DB and is expressed by Request Units (or RUs, for short). You can think of RUs per second as…
Adventures with Azure Cosmos DB: Repository Pattern
In a recent article, Adventures with Azure Table Storage: Repository Pattern, I wrote about how one possible implementation of the repository pattern using the Microsoft.Azure.Cosmos.Table SDK. This article mirrors that article, except this time around I used the Microsoft.Azure.Cosmos SDK. So if you are interested in getting a better understanding, please read that first article…
Adventures with Azure Table Storage: Repository Pattern
I am not a fan of writing wrapper libraries around SDKs. A good mature SDK should be simple to use and require a minimal amount of code to implement. Instead, I would rather focus on guiding the development team on how to best use the SDK, in this case the Microsoft.Azure.Cosmos.Table SDK. What exactly is…
Adventures with Azure Table Storage: Default Retry Policy
I am working on a .NET Core 3.0 C# example of the Repository design pattern leverage Azure Table Storage. I have been using the Microsoft.Azure.Cosmos.Table library. One thing that is nice about leveraging the available SDKs is that a Retry design pattern is often implemented by default using Polly. For the life of me, I…