Azure Functions in TypeScript: REST CRUD with Azure Table Storage

A few years ago I published an article on how to do CRUD & REST with JavaScript-based Azure Functions against Azure Table Storage. Back then serverless was still pretty new in Microsoft Azure. Since then a lot has changed, three new runtime versions were released and the ecosystem has evolved. That old post still gets a bit of traffc though, so I thought it would be a good time to re-evaluate this topic and share some udated code samples.

Continue reading Azure Functions in TypeScript: REST CRUD with Azure Table Storage

Application Insights and Log Analytics Workspace Bicep Template

According to a message in the Azure Portal “Classic Application Insights is deprecated and will be retired in February 2024”. That means it’s time to think about how to configure Application Insights to store it’s data in a Log Analytics Workspace. You can do it manually in the Portal, but I prefer doing these things in Bicep so it can be replicated across all environments automatically.

Continue reading Application Insights and Log Analytics Workspace Bicep Template

Auto-Update UWP Apps over Azure BLOB Storage Static Websites

UWP has a very nice app update mechanism outside of the store that allows you to publish new releases to a public-facing website – and UWP taking care of the rest. And while the docs recommend Azure Web Apps for this, you can get the same results for a lot cheaper using the Static Websites feature in Azure BLOB Storage.

Continue reading Auto-Update UWP Apps over Azure BLOB Storage Static Websites

Deploying Azure Logic Apps + Managed Identity with Bicep

Today I needed to migrate an Azure Logic App from a test environment into our project’s Ressource Group and connect it to the Blob Storage using Managed Identity. Since we already have pipelines in place with a nice little Bicep script for all the infrastructure I wanted it also to be part of this deployment process.

Here are the things that needed solving:

  • Deploying the Logic App with environment-specific parameters
  • Makeing it easy to update the Logic App definition without having to touch the Bicep file
  • Connecting Logic App to Azure Blob Storage using an Azure Managed Identity
Continue reading Deploying Azure Logic Apps + Managed Identity with Bicep

Get newest entry in Azure Table Storage

Recently I had the requirement of retreiving the newest entry in an Azure Table Storage table. While there’s of course the Timestamp column that could be used to indetify the desired row, we would need to query the whole table to find the youngest date. This could be narrowed down by for example knowing on which day a record was added and filtering accordingly, but we’d probably still get multiple rows to check manually for the newest one.

Continue reading Get newest entry in Azure Table Storage

Deleting all Rows from Azure Table Storage (as fast as possible)

In this post we will see how to efficiently delete all rows in an Azure Table Storage using the new(ish) Azure.Data.Tables SDK. We’ll try to optimize for speed while also being mindful about the memory.

Note: When deleting a lot of data from Azure Table Storage usually the fastest way is to just drop the whole table. However, we cannot be sure when exactly we’re able to create a new table with the same name since it can take up to a minute or even longer for Azure to actually get rid of the table.

Continue reading Deleting all Rows from Azure Table Storage (as fast as possible)

Application Insights & Azure Table Storage CreateIfNotExists Errors

When working with Azure Table Storage and Application Insights you might have noticed a lot of dependency errors, logging a 409 Conflict event everytime the CreateIfNotExists() method is called to make sure a table is available.

This is because the Azure.Data.Tables SDK will simply try to create a new table — and will hide the error if it already exists. While you don’t notice this in the code, by default Application Insights will catch this and clutter your logs with errors you probably don’t want.

Continue reading Application Insights & Azure Table Storage CreateIfNotExists Errors

Which Azure Table Storage .NET SDK should I use?

When working with Azure Table Storage (ATS) in C# / .NET there are currently at least four NuGet packages offered by Microsoft for working with tables. It gets even more complicated as there’s an Azure.Storage SDK (currently in Version 12) that works with all Azure Storage Account related services — except Table Storage. Additionally Microsoft mostly talks about the CosmosDB Table API, but all libraries also work with the regular ATS since the APIs are identical.

So what are our options and which one should I choose?

Continue reading Which Azure Table Storage .NET SDK should I use?

Deploying Angular to Azure BLOB Storage using Azure DevOps pipelines

Using the Static website feature Azure Storage Account is a cheap and convenient way to quicky deploy an Angular app (or any kind of SPA for that matter). And since I’m creating such a pipeline on a fairly regular basis I though it might come handy share my default approach for doing that.

Continue reading Deploying Angular to Azure BLOB Storage using Azure DevOps pipelines

Bluetooth Low Energy BLE devices with Azure IoT Edge

One of the major reasons for utilizing an Azure Iot Edge Gateway is to connect devices to the internet that can’t directly establish a connection themselves. A very common case are Bluetooth beacons, that can provide sensor data through a Bluetooth Low Energy (BLE) connection but are not able to send this information directly to an Azure IoT Hub.

For this scenario a bridge or gateway is required to create an IoT message from the Bluetooth payload. This is called Protocol Translation and can be achieved by creating a custom IoT Edge Module. Interestingly enough Microsoft has still not managed to provide a sample or best practice on how to do this with the IoT Edge Runtime V2, so here’s how we did it in our latest IoT project.

Continue reading Bluetooth Low Energy BLE devices with Azure IoT Edge