On March 22, I put my hand up to do demos for the Office Patterns and Practices Special Interest Group conference call. We talked about Azure Functions with PnP, and Bert talked about a new Modern Page scanner that can be used to check if sites have customizations that would make migrating to modern pages difficult.
I had a lot of fun. It probably was very obvious I was laughing most of the way. This is a follow up post of various things that I had noted down but unsaid.
All my Functions in the demo are published to: https://github.com/johnnliu/azure-functions-o365
That Get-AccessToken typo
It turns out the problem is the dash - character that I copied from GitHub. If I retrype the command as - (dash) then the cmdlet is fine.
Vesa mentioned this at the end. Azure Function's pricing is very cheap. It is actually because Functions don't run on VMs provisioned for you. Azure finds an unused VM, copy your function on it, then run it, and then delete it. The free monthly compute bucket is 400,000 Gb/s. If you exceed the limit it is still dirt cheap. I'm serious about the fact that I have turned off all my VMs, I only run Functions.
Also, I'm just as shocked as you are that Vesa seems to know exactly what I'm about to present next.
My platform as a service goes up. I see Docker as going downwards and not the direction I want to go. Functions as a Serverless platform needs to be above Web Server as a platform. They could all live on top of Docker, but that's an implementation detail that I don't need to care about.
Configure Inputs and Outputs
Because Functions are serverless, it is important to understand that you don't really want to even write your own code for handling output. If you want to write to Blob Storage or Azure Queue - there are output configuration you can set up. Then the output from the function is written directly to those sources without you having to write bare minimum code.
Configuring Inputs also allows you to switch from a HttpTrigger to a TimerTrigger, if you need that.
Flow to Azure Functions
If you feel uncomfortable with having an open public URL exposed - you can have Flow upload a JSON directly to an Azure Queue, then execute the Azure Function from the queue. This also provides automatic-retries.
Future announcement - PnP SIG JS Call
I've done a bit more work with pnp-js-core, azure-functions-cli and azure-functions-pack. And have put up my hands to Patrick to do a PnP-JS-Core SIG call in the future. Need a few pieces to sort out first.
Azure Functions has a very definite place with NodeJS as well. We'll explore that hopefully soon.