The Azure Functions team has yet again joined us for another monthly live webcast by staying remote and safe.
In this live webcast, along with Jeff Hollan, Maria from the Azure Functions team, and Pecha joined us to give a picture of the latest happenings in Azure Functions space.
Without any further delay, let us jump in as there are tons of update are awaiting.
- Service Bus improvements (draining) – A bunch of improvements have been made which helps to do a better job on draining, discontinuing, pulling new messages, and provides a much more graceful scaling experience specifically in a Service Bus.
- Azure Connectors for Functions (Private Preview) – This is basically for those who are already familiar with the Logic Apps and Power Apps connectors. So, here we are trying to bring the functionality of Logic Apps & Power Apps and all of that super easy authentication to different services that you get from them over to code.
Why Is Service Integrations Still so Hard?
Before jumping into Azure API connectors, we will start off by walking you through the state of the world today around integration services & why we are trying to make a change.
So, a few weeks ago, we were trying to create an Azure Function to help notify about failing tests & builds where I wanted to post a notification team to alert us only if there was a trend in failures in our Azure DevOps.
But we wasted a lot of time reading through documentation & incrementally testing where it wasn’t worth our time and this was the moment that we wished to use API connectors which are already available for Power Apps and Logic Apps directly in the code.
If you haven’t seen Logic Apps before, it is an Azure service through which you can connect different services with the click of a button with this friendly UI and it also takes care of the trickiest parts of integration service like authentication.
What Went Wrong While Trying to Connect to Different Services Through Code?
We just thought adding even one service to our Function App would be simple, but we didn’t get it working instead we wasted a lot of time trying to make it work.
Barriers to Service Integration Today
Exploring Services (optional)
- This is applicable if you don’t have a clear scenario in mind already.
- If we haven’t worked with a service before, then we would not have a good sense of how much to be invested before we get it working.
Finding the API’s per service
- Is there an SDK available written in your preferred language?
- Where is the complete set of APIs?
- Documents can be fragmented – how good is their documentation or do they have samples that we can follow?
Sometimes you get lucky and the service has an intuitive SDK with great documentation that’s easy to find and navigate but that doesn’t happen often.
Once documentation is done & you know what is to be done, then figuring out authentication & doing it right is one of the hardest parts.
- Prior knowledge required
We tried to send a mail using Gmail SDK. Here, the first two steps were really simple but on clicking the third step, it showed 100+ lines of quick-start code where all this code is just to authorize the google APIs but to send a mail, we have many more steps to be followed.
The next steps are unclear, and these documents still rely on prior knowledge.
- Many steps involved
Doing something with the Payload
- No intellisense if SDK isn’t supported
- Documentation can be limited to the requested payload. So, trying to get the request correct & parsing the response could again be a big roadblock.
Let’s Get Deeper into Azure Connectors for Functions
Don’t be surprised to know that all the above issues can be solved by using API connectors. With Azure API connections we are now bringing standardized models connecting to services from connectors with the power of code.
A Quick Demo
- Here is a demo using Visual Studio Code with a durable orchestrator which basically lets you orchestrate calling different functions. Consider a scenario where the app should give you a reminder 10 hours before my earliest meeting where the notification should be sent to teams.
- This page is full of Durable concepts & each of the functions that we are calling will have an API connection inside of them.
- Here is another example that sends a meme to your teams whenever it runs and below is the code with the output.
- Andy Haith – Writing an Azure Function in Node.js
- Ajiri Gunn – 5 Reasons to go serverless with Azure
- Ashirwad Satapathi – Building Serverless APIs using Azure Function and Azure SQL
- Joseph Guadagno – Securing Azure Function Settings with Azure Key Vault
- Alexandre Nedelec – Manage configuration secrets in Azure Functions
- Gwyneth Peña S. – I really like Azure Static Web apps
- Josh Carlisle – Getting started with Static Web Apps
- Rohan Nevikar – Authorization of applications in an Azure Function
- Aaron Powell – GraphQL on Azure: Serverless CosmosDB + Functions
- Linda Nichols – The curious developer’s guide to portable Azure Functions
- Open API / Swagger Function Generator
- Restrict all storage to the private network
- Checkpoint control for Event Hubs / Cosmos DB
- Improved tooling for migration of Consumption to Premium
- Key Vault setting secret rotation
- Durable Entities support in Python
Question & Answer Session
- Do we get access to all the connectors of Logic Apps even in Functions?
Since Azure Connectors for Functions feature is only in private preview, we only have integration with Microsoft services, but we are looking to extend our support to custom connectors as soon as possible.
- What about .NET support in functions?
We are already working on that and it is coming very soon.
- Do we have private endpoints for Functions in the Consumption plan?
We have service endpoint support in the consumption plan but giving private endpoint support is a bit trickier because in service endpoint the recall has to come from a virtual or private network whereas in private endpoint you are incharge of the IP address.