As part of an existing Azure Functions app that has some HTTP Functions that generate Excel files and return them as a byte array, I wanted to add an integration tests web project that when run would download the resulting Excel files. This Azure Functions app is automatically deployed from a GitHub repo.
Kudu and deployment scripts
When using GitHub to deploy any Azure App Service app (including Azure Function apps), Kudu chooses which deployment script to use based on your project type. As it states in the Customizing deployments article in the Kudu wiki, if you happen to have a web project in the repository, then it chooses to build and deploy that project. Continue reading
Application Insights is an awesome monitoring tool, but it considers all 4xx and 5xx HTTP Status Codes as errors, and when writing REST APIs some of these codes have a special meaning and are not errors. A 404 (Not found) response from a REST API usually means there are no results for a given action, not that you have hit a non-existent page.
So, how do we tell Application Insights to ignore those 404s? Simple: we write what is called a Telemetry processor. Continue reading
Are you designing applications for the cloud? This Cloud Design Patterns infographic created by Microsoft provides a great reference of cloud architecture design patterns and guidance for cloud-hosted applications in Microsoft Azure!
You can see and download the full infographic from: https://azure.microsoft.com/en-us/documentation/infographics/cloud-design-patterns/
Azure Web Apps have a great feature: continuous deployment from different kinds of repositories: Visual Studio Online, OneDrive, a local Git repo, GitHub, Bitbucket, Dropbox or an external repo. You also have built-in alert notifications, but there’s no built-in notifications for deployments, and that’s where Kudu web hooks come to the rescue.
But first, what is Kudu?
Project Kudu is an open source project hosted in GitHub that is the engine behind Git/Mercurial deployments, WebJobs, and various other features in Azure Web Apps. And, it can also run outside of Azure.
What are Web Hooks?
A Web Hook is an HTTP callback: an HTTP POST that occurs when something happens; a simple event-notification via HTTP POST. Web Hooks are a way to receive valuable information when it happens, rather than continually polling for that data and receiving nothing valuable most of the time. Continue reading
Managing an HDInsight cluster, or running an HDInsight job, from an Azure WebJob, requires you to set up a certificate to access the HDInsight cluster. This post shows how to upload the certificate to the Azure management portal, and how to configure our WebJob.
To generate the certificate file we need, you can follow the steps for the .pfx certificate file generation here.
Uploading the certificate file
The .pfx file should be uploaded in the “Configure” section in your Web App. To do so, follow these steps: Continue reading
The default instance name
Those of you who look at SQL database connection logs, or at tools like New Relic to monitor your Cloud Service applications, may have noticed that the list of servers running the application have names like “RD000D3A107CFC” (this is the host name in the network).
This name isn’t very useful when trying to identify which of the instances we see in the Azure Management Portal is the one that corresponds to that name. All instances in the portal are named as the role name followed by a number (e.g.: CloudService.Web_IN_1). Continue reading
Managing an HDInsight cluster, or running an HDInsight job, from an Azure worker role, requires you to set up a certificate to access the HDInsight cluster. This post shows how to upload the certificates to the Azure management portal, and how to configure our cloud service. The previous post (Setting up a cloud service to run HDInsight jobs – Part 1) showed the steps to generate the certificate files we need.
Uploading the certificate files
The .cer file should be uploaded to the Azure portal under the “Management Certificates” section. To do so, follow these steps: Continue reading