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 Blazor: My First Component, a Busy Button
I recently challenged myself to take one of my side projects, on of my many multi-million dollar ideas, and develop it using some technologies that I am not fully accustomed to. For the back-end I am going to use Logic Apps, Azure Functions (JavaScript), Cosmos DB and for the front-end I am going to use…
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…
Adventures with Messaging: Choose Your Own Messaging Service
I have been doing a lot with Azure messaging services of late, including Event Grid, Event Hub, Service Bus and Storage Queues. In an effort to reduce the number of searches I do for C# code on how to work with these various messaging services in .NET Core, I have created a sample solution for…