<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Dean Bryen</title>
    <description>The latest articles on DEV Community by Dean Bryen (@deanbryen).</description>
    <link>https://dev.to/deanbryen</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F142332%2F609be91f-087b-47be-b566-bce52dfd460d.jpg</url>
      <title>DEV Community: Dean Bryen</title>
      <link>https://dev.to/deanbryen</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/deanbryen"/>
    <language>en</language>
    <item>
      <title>5 ways to skill up on the cloud this Christmas! 🎅🏻🎄</title>
      <dc:creator>Dean Bryen</dc:creator>
      <pubDate>Mon, 02 Dec 2019 12:35:53 +0000</pubDate>
      <link>https://dev.to/deanbryen/5-ways-to-skill-up-on-the-cloud-this-christmas-fnl</link>
      <guid>https://dev.to/deanbryen/5-ways-to-skill-up-on-the-cloud-this-christmas-fnl</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aFGYaVFr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1920/1%2AJG9G2f4vYMj-xBQwUQM7Hw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aFGYaVFr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1920/1%2AJG9G2f4vYMj-xBQwUQM7Hw.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So Christmas is coming and December is normally a time when everyone is starting to wind down for the holidays. But the Developer Relations people of this world just don’t know when to slow down!&lt;/p&gt;

&lt;p&gt;I’ve been amazed this morning, logging onto my computer and seeing all of the amazing content that’s being created and published EVERY day in the run up to Santa’s visit!&lt;/p&gt;

&lt;p&gt;It turns out, that December might just be the best time of the year to learn more about the cloud! Don’t wait until January to start your new years resolution, utilise the quiet period to get up-skilled today! Here’s a few great resources fo you to check out this month!&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-us/free/?wt.mc_id=devto-adventblog-debryen"&gt;Sign up for a free Azure account&lt;/a&gt;&lt;br&gt;
If you want to complete some of the challenges, you’ll need an account with a cloud provider. Here’s how to get one on Azure.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. 25 Days of Serverless
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BsA-d4qa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AVF4mz86YNq6IVWR03VmhwQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BsA-d4qa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AVF4mz86YNq6IVWR03VmhwQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This one is brought to you by the team of &lt;a href="https://dev.toundefined"&gt;Azure Dev Advocates&lt;/a&gt; at Microsoft. Each day, there will be a new challenge posted and you’ll be able to learn all kinds of things about &lt;a href="https://azure.microsoft.com/overview/serverless-computing/?WT.mc_id=devto-adventblog-debryen"&gt;Serverless technology &lt;/a&gt;by means of creative puzzles and fun activities.&lt;/p&gt;

&lt;p&gt;The challenges can obviously be completed on &lt;a href="https://azure.microsoft.com/free/?WT.mc_id=devto-adventblog-debryen"&gt;Azure&lt;/a&gt;, maybe leveraging &lt;a href="https://azure.microsoft.com/services/functions/?WT.mc_id=devto-adventblog-debryen"&gt;Azure Functions&lt;/a&gt; or &lt;a href="https://azure.microsoft.com/services/logic-apps/?WT.mc_id=devto-adventblog-debryen"&gt;Azure Logic Apps&lt;/a&gt;, but they’re cloud agnostic too, so you can solve them on any serverless cloud of your choice!&lt;/p&gt;

&lt;p&gt;All you have to do is visit &lt;a href="http://25daysofserverless.com/"&gt;25daysofserverless.com&lt;/a&gt; to learn all about it and find the first couple of challenges!&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Azure Advent Calendar
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rAmh7l7S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2ALLvBKk5HWmIocJ24O4_ZEw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rAmh7l7S--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2ALLvBKk5HWmIocJ24O4_ZEw.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Want to learn about &lt;a href="https://azure.microsoft.com/free/?WT.mc_id=devto-adventblog-debryen"&gt;Azure&lt;/a&gt;? Or maybe you’re already using Azure and want to dive deeper each day? This one is absolutely jam packed with content.&lt;/p&gt;

&lt;p&gt;Brought to you by Azure MVPs &lt;a href="https://dev.toundefined"&gt;Gregor Suttie&lt;/a&gt; and &lt;a href="https://twitter.com/Pixel_Robots"&gt;@Pixel_Robots&lt;/a&gt; You’ll get a whopping 3 pieces of content each day! Each day there’ll be 3 videos, each with an accompanying blog post. They’ll be covering a bunch of Azure topics from &lt;a href="https://azure.microsoft.com/services/iot-hub/?WT.mc_id=devto-adventblog-debryen"&gt;Azure IoT&lt;/a&gt; through to how to pass &lt;a href="https://www.microsoft.com/learning/azure-exams.aspx?WT.mc_id=devto-adventblog-debryen"&gt;Azure Certifications&lt;/a&gt; so there’s something for everyone!&lt;/p&gt;

&lt;p&gt;Head over to &lt;a href="https://azureadventcalendar.com/"&gt;https://azureadventcalendar.com/&lt;/a&gt; or their &lt;a href="https://www.youtube.com/channel/UCJL9wCcmeMBbah4J0uOWIPg"&gt;YouTube channel &lt;/a&gt;to get your hands on the content each day!&lt;/p&gt;

&lt;h2&gt;
  
  
  3. #DevDecember
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Kxarw9k6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A7DApP0SQeHEqPMNchv9aDQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Kxarw9k6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A7DApP0SQeHEqPMNchv9aDQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So we’ve already covered some new content that you can get each day this month. But it’s been an amazing year of content already in 2019! #DevDecember, brought to you by @livelovegeek from &lt;a href="https://azure.microsoft.com/free/?WT.mc_id=devto-adventblog-debryen"&gt;Microsoft Azure&lt;/a&gt;, is an effort to share some of the best cloud content of the year, as well as some new stuff too!&lt;/p&gt;

&lt;p&gt;I hear there’s going to be an awesome Ugly Christmas Sweater &lt;a href="https://azure.microsoft.com/services/iot-hub/?WT.mc_id=devto-adventblog-debryen"&gt;IoT&lt;/a&gt; tutorial!&lt;/p&gt;

&lt;p&gt;There’s a blog post explaining everything &lt;a href="https://techcommunity.microsoft.com/t5/Azure-Developer-Community-Blog/Introducing-DevDecember/ba-p/1027483?WT.mc_id=devto-adventblog-debryen"&gt;here&lt;/a&gt;, and you can follow the hashtag &lt;a href="https://twitter.com/search?q=%23DevDecember"&gt;#DevDecember&lt;/a&gt; on Twitter to get all the juicy content each day!&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Devops this holiday season?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PTwQhjj5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AYCsEM29mOLC8chaWtRVf1g.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PTwQhjj5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AYCsEM29mOLC8chaWtRVf1g.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I know just what you need to get you in the Christmas spirit! Some Devops!!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.toundefined"&gt;Edward Thomson&lt;/a&gt; from Github is going to be posting a daily blog post for you to learn more about &lt;a href="https://docs.microsoft.com/azure/azure-functions/functions-how-to-github-actions?WT.mc_id=devto-adventblog-debryen"&gt;Github Actions,&lt;/a&gt; their new service that allows you to perform CI/CD. As well as build, test, and deploy your code right from GitHub&lt;/p&gt;

&lt;p&gt;To check the posts out, head over to &lt;a href="https://edwardthomson.com/blog/github_actions_advent_calendar.html"&gt;Edward’s personal blog&lt;/a&gt; where he’ll be posting the content.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Advent of Cyber
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uM2WvKO5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2230/1%2A4DvPv9P9cTTr81jnGUiZRg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uM2WvKO5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2230/1%2A4DvPv9P9cTTr81jnGUiZRg.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a cloud security advocate, how could we miss this one out! It’s not specifically &lt;a href="https://azure.microsoft.com/overview/security/?WT.mc_id=devto-adventblog-debryen"&gt;cloud security&lt;/a&gt; related, but security is important folks! So it can’t harm to brush up on our infosec skills this winter can it?&lt;/p&gt;

&lt;p&gt;The Cyber Advent Calendar is brought to you by &lt;a href="https://tryhackme.com/christmas"&gt;TryHackMe&lt;/a&gt; and each day there’ll be a challenge every day, designed at beginners, in their words &lt;em&gt;‘we won’t be throwing you in at the deep end’&lt;/em&gt; so it’s a fun way to get up to speed if it’s not something you’ve really invested time in previously!&lt;/p&gt;

&lt;p&gt;There’ll be challenges released on &lt;a href="https://docs.microsoft.com/azure/security/develop/secure-dev-overview?WT.mc_id=devto-adventblog-debryen"&gt;Web Exploitation&lt;/a&gt;, &lt;a href="https://azure.microsoft.com/features/cloud-shell/?WT.mc_id=devto-adventblog-debryen"&gt;Scripting&lt;/a&gt;, &lt;a href="https://docs.microsoft.com/azure/networking/networking-overview?WT.mc_id=devto-adventblog-debryen"&gt;Networking&lt;/a&gt; and more! Each one is self contained so it doesn’t matter where/when you get started.&lt;/p&gt;

&lt;p&gt;So head on over to &lt;a href="https://tryhackme.com/christmas"&gt;https://tryhackme.com/christmas&lt;/a&gt; to get started!&lt;/p&gt;

&lt;p&gt;So there we have it, 5 great resources to help you brush up on the Cloud this December! Here’s a final list of resources.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/en-us/free/?wt.mc_id=devto-adventblog-debryen"&gt;Sign up for a free Azure account&lt;/a&gt;&lt;br&gt;
If you want to complete some of the challenges, you’ll need an account with a cloud provider. Here’s how to get one on Azure.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://25daysofserverless.com/"&gt;25 Days of Serverless&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azureadventcalendar.com/"&gt;Azure Advent Calendar&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://techcommunity.microsoft.com/t5/Azure-Developer-Community-Blog/Introducing-DevDecember/ba-p/1027483?WT.mc_id=devto-adventblog-debryen"&gt;#DevDecember&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://edwardthomson.com/blog/github_actions_advent_calendar.html"&gt;Github Actions Advent Calendar&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://tryhackme.com/christmas"&gt;Advent of Cyber&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Happy Learning!&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>tutorial</category>
      <category>christmas</category>
    </item>
    <item>
      <title>My Top 5 Azure Security Announcements from Microsoft Ignite 2019</title>
      <dc:creator>Dean Bryen</dc:creator>
      <pubDate>Tue, 12 Nov 2019 11:21:52 +0000</pubDate>
      <link>https://dev.to/azure/top-5-azure-security-announcements-from-microsoft-ignite-2019-25nl</link>
      <guid>https://dev.to/azure/top-5-azure-security-announcements-from-microsoft-ignite-2019-25nl</guid>
      <description>&lt;h1&gt;
  
  
  My Top 5 Azure Security Announcements from Microsoft Ignite 2019
&lt;/h1&gt;

&lt;p&gt;I was lucky enough to be at Microsoft Ignite in Orlando last week! The number of announcements was pretty hard to keep up with, it was relentless! And so was the sunshine, so I just went and sat by the pool and sunbathed all week! ☀️&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wz9-dO5c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2AhCbNGCTjX_MviC2KeE-QKg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wz9-dO5c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2AhCbNGCTjX_MviC2KeE-QKg.jpeg" alt="Orange County Convention Center"&gt;&lt;/a&gt;&lt;em&gt;Orange County Convention Center&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Oh how I wish that was true! I was busy meeting a whole bunch of people, recording some video content, and most importantly trying to keep on top of the security announcements so you don’t have to 😊&lt;/p&gt;

&lt;p&gt;So I thought I’d summarize my top 5 Azure Security announcements for you right here! Here goes…..&lt;/p&gt;

&lt;h2&gt;
  
  
  Azure Security Center — Custom Policies (Preview)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DwgtLtdz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2Aog28FD6FYr3vHe86Fp6HSw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DwgtLtdz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2Aog28FD6FYr3vHe86Fp6HSw.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Up until today, you’ve been able to leverage the recommendations, secure score and regulatory compliance checks that &lt;a href="https://docs.microsoft.com/azure/security-center/security-center-intro?WT.mc_id=sectop5-blog-debryen"&gt;Security Center&lt;/a&gt; has built in. But lots of you probably have your own security policies and benchmarks too!&lt;/p&gt;

&lt;p&gt;Good news! As of Ignite (in public preview) you can now create a custom initiative in &lt;a href="https://docs.microsoft.com/azure/governance/policy/overview?WT.mc_id=sectop5-blog-debryen"&gt;Azure Policy&lt;/a&gt; that meets your own security requirements, and add that as a &lt;a href="https://docs.microsoft.com/azure/security-center/tutorial-security-policy?WT.mc_id=sectop5-blog-debryen"&gt;policy&lt;/a&gt; in Security Center. This means you can extend the coverage of &lt;a href="https://docs.microsoft.com/azure/security-center/security-center-intro?WT.mc_id=sectop5-blog-debryen"&gt;Security Center&lt;/a&gt; to include your own assessments which will filter through to the Secure Score, Recommendations and Regulatory compliance dashboards you’re already familiar with today.&lt;/p&gt;

&lt;p&gt;Find out more &lt;a href="https://docs.microsoft.com/azure/security-center/tutorial-security-policy?WT.mc_id=sectop5-blog-debryen"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Threat Protection for Azure Kubernetes Service (AKS)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SytgyTib--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2ACQKDOaDus1URbdH1fzomOw.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SytgyTib--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2ACQKDOaDus1URbdH1fzomOw.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Containers and Kubernetes is hot stuff right now. More and more people I speak to are looking to Kubernetes as the new standard for deploying and managing cloud native applications.&lt;/p&gt;

&lt;p&gt;As of Ignite (In preview), you can now leverage &lt;a href="https://docs.microsoft.com/azure/security-center/security-center-intro?WT.mc_id=sectop5-blog-debryen"&gt;Azure Security Center&lt;/a&gt; to understand the security posture and gain further insights into your &lt;a href="https://docs.microsoft.com/azure/aks/?WT.mc_id=sectop5-blog-debryen"&gt;Azure Kubernetes Service (AKS)&lt;/a&gt; clusters. This release includes three key things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Continuous discovery of managed AKS instances&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Actionable reccomendations on security best practices for AKS&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Host and Cluster based threat detection analysis&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Find out more &lt;a href="https://docs.microsoft.com/azure/security-center/azure-kubernetes-service-integration?WT.mc_id=sectop5-blog-debryen"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Azure Notebooks direct from Azure Sentinel
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CnNhWbao--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2A54B2LUfM3jOlNJ-6Ru3QuA.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CnNhWbao--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2A54B2LUfM3jOlNJ-6Ru3QuA.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/sentinel/overview?WT.mc_id=sectop5-blog-debryen"&gt;Azure Sentinel&lt;/a&gt; was announced earlier this year. It’s a cloud native Security Incident and Event Management (SIEM) service. It provides a single solution for alert detection, threat visibility, proactive hunting, and threat response.&lt;/p&gt;

&lt;p&gt;Threat hunting is one area that I am particularly interested in. The power of finding threats in your environment is trawling through the data. Now you can some threat hunting in the Azure Portal, but to gain richer insights, and leverage a number of widely used python and machine learning libraries, many hunters are looking to Jupyter notebooks and Python to perform their hunting analysis.&lt;/p&gt;

&lt;p&gt;This has all been possible up until today by leveraging Jupyter and the kqlmagiclibrary. However it just got a lot simpler. &lt;a href="https://docs.microsoft.com/azure/notebooks/?WT.mc_id=sectop5-blog-debryen"&gt;Azure Notebooks&lt;/a&gt;, a hosted Jupyter notebook service is now directly integrated with &lt;a href="https://docs.microsoft.com/azure/sentinel/overview?WT.mc_id=sectop5-blog-debryen"&gt;Azure Sentinel&lt;/a&gt;, and there are also handful of &lt;a href="https://docs.microsoft.com/azure/sentinel/notebooks?WT.mc_id=sectop5-blog-debryen"&gt;pre-built notebooks&lt;/a&gt; already available for you to get started, as well a larger number of notebooks you can leverage from in the Sentinel Github Community.&lt;/p&gt;

&lt;p&gt;Find out more &lt;a href="https://docs.microsoft.com/azure/sentinel/notebooks?WT.mc_id=sectop5-blog-debryen"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Azure Arc — Implement Azure Security Anywhere
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GmA8uZK9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2AjNurso0r455K5ItRggrW5A.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GmA8uZK9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2AjNurso0r455K5ItRggrW5A.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://azure.microsoft.com/services/azure-arc/?WT.mc_id=sectop5-blog-debryen"&gt;Azure Arc&lt;/a&gt; was one of the hottest announcements at Ignite this year! Seriously, go and check it out! In a nutshell, it enables deployment of Azure services anywhere, on premises, at the edge, on other clouds and it extends Azure Management and &lt;strong&gt;Security&lt;/strong&gt; to any the infrastructure in those places too!&lt;/p&gt;

&lt;p&gt;But this blog post is about security. So what security benefits does &lt;a href="https://azure.microsoft.com/services/azure-arc/?WT.mc_id=sectop5-blog-debryen"&gt;Azure Arc &lt;/a&gt;bring to on premises/edge/multi-cloud environments?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Access unique Azure security capabilities such as Azure Threat Detection&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Centrally manage access and security policies for resources with Role Based Access Control&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enforce compliance and simplify audit reporting&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Find out more &lt;a href="https://azure.microsoft.com/services/azure-arc/?WT.mc_id=sectop5-blog-debryen"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Password-less Authentication for the masses
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--advSwnll--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2Amm4iseeb464f6vtIYOBQ9Q.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--advSwnll--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3840/1%2Amm4iseeb464f6vtIYOBQ9Q.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;OK so this is one I’m super happy about. Until last week, only customers with a paid &lt;a href="https://docs.microsoft.com/azure/active-directory/fundamentals/active-directory-whatis?WT.mc_id=sectop5-blog-debryen"&gt;Azure Active Directory (AD)&lt;/a&gt; plan could use the &lt;a href="https://docs.microsoft.com/azure/active-directory/user-help/multi-factor-authentication-setup-auth-app?WT.mc_id=sectop5-blog-debryen"&gt;Microsoft Authenticator app&lt;/a&gt; for &lt;a href="https://docs.microsoft.com/azure/active-directory/authentication/concept-authentication-passwordless?WT.mc_id=sectop5-blog-debryen"&gt;password-less authentication&lt;/a&gt; (Preview).&lt;/p&gt;

&lt;p&gt;But now customers with any Azure AD plan can use &lt;a href="https://docs.microsoft.com/azure/active-directory/authentication/concept-authentication-passwordless?WT.mc_id=sectop5-blog-debryen"&gt;password-less authentication&lt;/a&gt;. Yippee!&lt;/p&gt;

&lt;p&gt;Also, as of 1st Nov 2019, there will be no charges for using &lt;a href="https://docs.microsoft.com/azure/active-directory/authentication/concept-mfa-get-started?WT.mc_id=sectop5-blog-debryen"&gt;Multi-Factor Authentication&lt;/a&gt; or &lt;a href="https://docs.microsoft.com/azure/active-directory/authentication/concept-authentication-passwordless?WT.mc_id=sectop5-blog-debryen"&gt;passwordless authentication&lt;/a&gt;. Double Yippee!&lt;/p&gt;

&lt;p&gt;Find out more &lt;a href="https://docs.microsoft.com/azure/active-directory/authentication/concept-authentication-passwordless?WT.mc_id=sectop5-blog-debryen"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Oh and something fun to share
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cD3LU55I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/9216/1%2Acg1pYKBWxHdxzbbPP7B53w.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cD3LU55I--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/9216/1%2Acg1pYKBWxHdxzbbPP7B53w.jpeg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I thought I’d share with you one awesome infosec thing I got a chance to do at Ignite.&lt;/p&gt;

&lt;p&gt;Microsoft created 1nter5ec7ion, a VR based escape room for Cyber Defenders wanting to save the world! Sounds more serious than it was, honest! But it was super fun, four colleagues and I had to work as team to solve a number of challenges in a 15 minute period to defeat the infamous hacker 157. It was great fun,and we escaped with 04:03 to spare! #WorldsBestCyberDefenders&lt;/p&gt;

&lt;p&gt;I’m not sure if they’ll be bringing this to other conferences, but if they are, and you see it, you should definitely check it out!&lt;/p&gt;

&lt;h2&gt;
  
  
  What was your top announcement?
&lt;/h2&gt;

&lt;p&gt;So that’s it! My top 5 Azure Security announcements at Microsoft Ignite 2019!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/security-center/tutorial-security-policy?WT.mc_id=sectop5-blog-debryen"&gt;Azure Security Center — Custom Policies (Preview)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/security-center/azure-kubernetes-service-integration?WT.mc_id=sectop5-blog-debryen"&gt;Threat Protection for Azure Kubernetes Service (AKS)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/sentinel/notebooks?WT.mc_id=sectop5-blog-debryen"&gt;Azure Notebooks direct from Azure Sentinel&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://azure.microsoft.com/services/azure-arc/?WT.mc_id=sectop5-blog-debryen"&gt;Azure Arc — Implement Azure Security Anywhere&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.microsoft.com/azure/active-directory/authentication/concept-authentication-passwordless?WT.mc_id=sectop5-blog-debryen"&gt;Password-less Authentication for the masses&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What were your favorite announcements?&lt;br&gt;
Did I miss anything huge!&lt;/p&gt;

&lt;p&gt;Let me know in the comments.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>cyber</category>
      <category>security</category>
      <category>azure</category>
    </item>
    <item>
      <title>Azure Pipelines - Adding CI/CD from GitHub to Azure Functions ⚡</title>
      <dc:creator>Dean Bryen</dc:creator>
      <pubDate>Mon, 17 Sep 2018 00:00:00 +0000</pubDate>
      <link>https://dev.to/azure/azure-pipelines-adding-ci-cd-from-github-to-azure-functions-2dh6</link>
      <guid>https://dev.to/azure/azure-pipelines-adding-ci-cd-from-github-to-azure-functions-2dh6</guid>
      <description>&lt;p&gt;Last year &lt;a href="https://azure.microsoft.com/en-us/blog/introducing-azure-devops/?WT.mc_id=fnciblog-devto-debryen"&gt;Azure Devops&lt;/a&gt; was released. The CI integration with GitHub looked neat, so I thought I’d try it out for some serverless apps.&lt;/p&gt;

&lt;p&gt;So here’s how I went about configuring a very simple setup!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E9sqdkx5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AN8tgXcKNJ6eHOOzhXExsDQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E9sqdkx5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AN8tgXcKNJ6eHOOzhXExsDQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pre-requisites:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An existing Azure Function App — (&lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-function-app-portal?WT.mc_id=fnciblog-devto-debryen"&gt;Tutorial&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;A GitHub repository with your function code in. If you don’t have one, you can fork my &lt;a href="https://github.com/deanobalino/functions-simple"&gt;Super Simple Function&lt;/a&gt; repo and follow along.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let’s start out with the &lt;a href="https://github.com/marketplace/azure-pipelines"&gt;Azure Pipelines Plugin&lt;/a&gt; from the GitHub Marketplace.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qVk-qTi8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2Az6LyL8U8YFG9_yorn0tfRA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qVk-qTi8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2Az6LyL8U8YFG9_yorn0tfRA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s go ahead and set up a plan.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Vt3JmZEd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A5EXPH3EFFBMfs8vOsKNUUg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Vt3JmZEd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A5EXPH3EFFBMfs8vOsKNUUg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Azure Pipelines is free for both public and private projects, and public repositories even get 10 parallel jobs for free too. So, unless you need multiple parallel jobs for your private repositories, which we most definitely don’t for this tutorial, you can select the free plan .&lt;/p&gt;

&lt;p&gt;Go ahead and install the marketplace app, and log in to your Azure account. You should be redirected to the Azure Devops portal. You’re now ready to setup Azure Pipelines for our serverless app! 😀&lt;/p&gt;

&lt;p&gt;First, go ahead and select your repository, I’ll be using my functions-simple repository.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mUqdGOph--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AI8afZGM29MVnyIWoOlzGuw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mUqdGOph--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AI8afZGM29MVnyIWoOlzGuw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pipelines will now analyse the git repository and recommend a starter template. This may differ depending on your application, and feel free to play around here. But I’m just going to select the ‘Starter Template’ as we’ll be scrapping this and writing our build pipeline from scratch.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pGziVU75--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2ArinlFzP_rR5EQ5w5QLbLjw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pGziVU75--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2ArinlFzP_rR5EQ5w5QLbLjw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is where the magic starts to happen. You define your build pipeline as code, by creating a YAML file called&lt;code&gt;azure-pipelines.yml&lt;/code&gt; . We’ll write ours in a moment. But let’s first understand why that’s awesome.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You place your &lt;code&gt;azure-pipelines.yml&lt;/code&gt; file at the root of your repository.&lt;/li&gt;
&lt;li&gt;Upon a push to your linked GitHub repository, Pipelines will trigger a build, which will follow the steps and configuration outlined in &lt;code&gt;azure-pipelines.yml&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;So you can keep your build pipeline configuration right beside your application code and version controlled in GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So what does the &lt;code&gt;azure-pipelines.yml&lt;/code&gt; file for our build pipeline look like?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Agent Configuration&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
The first section of our YAML file defines the agent pool which will be running our jobs. These are the hosts that run our build steps for us. Here we have decided to use Hosted Linux Agents running Ubuntu.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pool:
  vmImage: 'Ubuntu 16.04'
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Build Steps&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Next, we need to define our build steps. Our build will have three steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Run an &lt;code&gt;npm install&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Create a zip archive of our code&lt;/li&gt;
&lt;li&gt;Publish our build artifacts for our release pipeline to pick up&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Of course in a real environment you may run mocha to perform tests, do some static code analysis, or use tools like &lt;a href="https://github.com/Azure/azure-functions-pack"&gt;funcpack&lt;/a&gt; to improve cold starts. All of these are easily achievable within pipelines too. But for the purpose of simplicity, we’ll stick to these three steps.&lt;/p&gt;

&lt;p&gt;First up, we run &lt;code&gt;npm install&lt;/code&gt; using the &lt;code&gt;script&lt;/code&gt; step. Pretty self explanatory.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;steps:
  - script: |
      npm install
    displayName: "npm install"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Secondly, we create an archive of our code using the built in Archive task.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- task: ArchiveFiles@2
    displayName: "Archive files"
    inputs:
      rootFolderOrFile: "$(System.DefaultWorkingDirectory)"
      includeRootFolder: false
      archiveFile: "$(System.DefaultWorkingDirectory)/$(Build.BuildId).zip"
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Scripts enable us to run command line scripts on the agent hosts, tasks are extra functionality that is either first party from Azure Devops or in the marketplace. Here we are using the &lt;code&gt;ArchiveFiles&lt;/code&gt; task to package up our code. We can also reference some useful variable that Azure Devops provides us here, you can see we are using these to identify the &lt;code&gt;$(System.DefaultWorkingDirectory)&lt;/code&gt; and &lt;code&gt;$(Build.BuildId)&lt;/code&gt; to both locate our code and save it with a meaningful name.&lt;/p&gt;

&lt;p&gt;Finally, we add a task to publish our build artifact.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(System.DefaultWorkingDirectory)'
      name: 'drop'
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Here, we are putting our artifact into the &lt;code&gt;DefaultWorkingDirectory&lt;/code&gt; with the name of &lt;code&gt;drop&lt;/code&gt; . We’ll be picking this up from there in our release pipeline when we deploy to Azure Functions.&lt;/p&gt;

&lt;p&gt;And that’s all there is to our build pipeline! Our &lt;code&gt;azure-pipelines.yml&lt;/code&gt; file that defines our build pipeline is finished, the final file should look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pool:
  vmImage: 'Ubuntu 16.04'
steps:
  - script: |
      npm install
    displayName: "npm install"
  - task: ArchiveFiles@2
    displayName: "Archive files"
    inputs:
      rootFolderOrFile: "$(System.DefaultWorkingDirectory)"
      includeRootFolder: false
      archiveFile: "$(System.DefaultWorkingDirectory)/$(Build.BuildId).zip"
  - task: PublishBuildArtifacts@1
    inputs:
      PathtoPublish: '$(System.DefaultWorkingDirectory)'
      name: 'drop'
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;You can delete the starter template in the browser, and replace it with your YAML file that will be similar to that above. Then click ‘Save and Run’. this will prompt you to commit your &lt;code&gt;azure-pipelines.yml&lt;/code&gt; to the linked GitHub repository. Add an optional commit description and then click ‘Save and Run’ again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Release Pipeline
&lt;/h2&gt;

&lt;p&gt;So now we’ve built our build pipeline and published our build artifact. We now need to create a release pipeline to deploy our application to Azure Functions. Unfortunately, Release pipelines don’t support YML today. So we’ll be creating this in the GUI.&lt;/p&gt;

&lt;p&gt;Firstly, click on Releases under the Pipelines heading in the Devops Portal and then click the ‘New’ button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5NavX6t1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A2YxuDMammuL4m1iZAbcbZg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5NavX6t1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A2YxuDMammuL4m1iZAbcbZg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We’re going to be using the ‘Azure App Service Deployment’ Template , so we’ll select that one, and then hit ‘Apply’.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iona2jbt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AlETmCaABKu46EdHcfj38qw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iona2jbt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AlETmCaABKu46EdHcfj38qw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can give your stage a name if you wish. So I’ve named mine ‘Deploy to Azure Functions’&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CHiAiqvD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A532kwsCudR7You0VwWsKew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CHiAiqvD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A532kwsCudR7You0VwWsKew.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next, we’ll need to configure the tasks that we want to perform as part of this stage within the release pipeline. We’ll click on the ‘1 job, 1 task’ link in within our pipeline to get these set up.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5U19xVku--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2Akk_K7JZgGBDnJU50ZDgcnQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5U19xVku--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2Akk_K7JZgGBDnJU50ZDgcnQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll be warned that our App Service Deployment task has some missing settings. Let’s fix these up.&lt;/p&gt;

&lt;p&gt;First of all, we need to authorise the connection between Azure Devops and our Azure Account where our function app lives. If you’re logged into Azure Devops with the same account that you use for Azure, you should be able to select the relevant subscription from the drop down menu. Once selected, click ‘Authorise’. You will get a pop up, asking you to log into your Azure account and authorise, in the background, this is creating a Service Principal with a contributor role, that allows Azure Devops to deploy to the Function App in your Subscription.&lt;/p&gt;

&lt;p&gt;Make sure you’ve set the App type to ‘Function App’ and then you should be able to select your function app from the pre-populated drop down under ‘App Service Name’.&lt;/p&gt;

&lt;p&gt;We’ll leave the Package or folder field with the default value of &lt;code&gt;$(System.DefaultWorkingDirectory)/**/*.zip&lt;/code&gt; , this is where it’ll grab the published artifact of our build pipeline from.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DkKLjK-J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AaUUrfNKIuShhpYgxWB-SDw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DkKLjK-J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AaUUrfNKIuShhpYgxWB-SDw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Head back over to the Pipeline tab in the portal. Next, we need to tell our release which build artifact we want it to deploy. So click on ‘Add an artifact’.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mD-xs9OJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A0hpZsdNgBvsBRjMwKe72Ug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mD-xs9OJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2A0hpZsdNgBvsBRjMwKe72Ug.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, we are configuring our artifact with the settings of our build pipeline. Simply complete the form using the pre-populated drop down menus and selecting the values for the build pipeline that we created earlier.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lMl7N5Sl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AG0hM65QmxqgotLt1wyjDgw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lMl7N5Sl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AG0hM65QmxqgotLt1wyjDgw.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So now we have an artifact, and some steps to perform for this release. We now need to setup a Continuous deployment trigger. This will tell Azure Devops when to run our release. Go ahead and click on the Lightning Bolt symbol next to our artifact.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xIJekdRm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2ArM1hemumrruplZEw4ATAkQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xIJekdRm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2ArM1hemumrruplZEw4ATAkQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can tell the service to create a release each time a new build is available, which will be each time we commit to our master branch thanks to the GitHub CI integration we setup earlier. So check the box to enable the Continuous Deployment trigger.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_mX9swRi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2ABQknfvxlN_drpHOnPlhKcg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_mX9swRi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2ABQknfvxlN_drpHOnPlhKcg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing
&lt;/h2&gt;

&lt;p&gt;And there we have it, we now have a GitHub CI integration with our build pipeline, which upon completion will trigger our continuous deployment to Azure Functions via our release pipeline.&lt;/p&gt;

&lt;p&gt;To check this works, Edit something in your function code, commit this to git and push to your linked GitHub repository. Sit back, and watch the magic happen…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If using my functions-simple example, you can simply change the response body of &lt;code&gt;/hello/index.js&lt;/code&gt; to something different.&lt;/p&gt;

&lt;p&gt;If you click on Builds, you should see in that upon pushing to GitHub a new build has started. Clicking on that specific build will provide a summary of the build. Once completed, you should have a big green check mark!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YhKRu0x9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AkiHGVlV-0ENJjEh_4TfTBg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YhKRu0x9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AkiHGVlV-0ENJjEh_4TfTBg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to dive deeper into the steps, you can click on the Logs tab and see each step of the build and exactly how long each one took, and if you click onto one of the steps, you will see the raw logs from the underlying agent when it was running that build step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--utP-31oV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AePwM2JH2THZvsecoUgkgCg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--utP-31oV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AePwM2JH2THZvsecoUgkgCg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once our build is complete, our Continuous deployment trigger should have been fired and our release pipeline should have kicked off. Click ‘Releases’ on the left hand side to see how our pipeline is getting on.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Dmend_aR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AGlv3WJR0jJQtUDafmhtHdg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Dmend_aR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AGlv3WJR0jJQtUDafmhtHdg.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here you will see that the release pipeline has been triggered, and you should see our stage ‘Deploy to Azure Functions’ highlighted green with a check mark to indicate there was a success.&lt;/p&gt;

&lt;p&gt;Now you can execute your Azure Function and see the changes that you made have taken effect. Happy Days!&lt;/p&gt;

&lt;h2&gt;
  
  
  Woohoo
&lt;/h2&gt;

&lt;p&gt;And that’s it, you now have CI/CD setup for your Azure functions using Azure Pipelines, directly from a push to your GitHub Repository 😀&lt;/p&gt;

&lt;p&gt;If you want to dive deeper, head on over to the &lt;a href="https://docs.microsoft.com/en-us/azure/devops/?WT.mc_id=fnciblog-devto-debryen"&gt;Azure Devops Documentation&lt;/a&gt;. Where you can build on the what we have done here to include multiple environments, release gates, project management and much more!&lt;/p&gt;

</description>
      <category>devops</category>
      <category>serverless</category>
      <category>azure</category>
      <category>cloud</category>
    </item>
    <item>
      <title>Azure Functions ⚡ A Developers Guide to Key Features</title>
      <dc:creator>Dean Bryen</dc:creator>
      <pubDate>Mon, 17 Sep 2018 00:00:00 +0000</pubDate>
      <link>https://dev.to/azure/azure-functions--a-developers-guide-to-key-features-2j0d</link>
      <guid>https://dev.to/azure/azure-functions--a-developers-guide-to-key-features-2j0d</guid>
      <description>&lt;h3&gt;
  
  
  How to get started with Azure functions
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--R0eQTBCY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://deanbryen.dev/img/feature-start.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R0eQTBCY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://deanbryen.dev/img/feature-start.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The past year of my life as a developer has been focused on diving deep into Azure Functions. Now that I’ve had the chance to come up for air, I wanted to share a few of my lessons to help other developers on their serverless journey.&lt;/p&gt;

&lt;p&gt;I’ve identified a few of my favorite features that has made developing with Functions as a Service (FaaS) a lot easier. Please hit me up in the comments with your feedback — I’d love to hear what features would help improve the next year of your life as a serverless developer.&lt;/p&gt;

&lt;h4&gt;
  
  
  Simple &amp;amp; Native Developer Tooling
&lt;/h4&gt;

&lt;p&gt;While I’m a huge fan of the &lt;a href="http://www.serverless.com"&gt;Serverless framework&lt;/a&gt;, their Azure support isn’t fantastic. The framework currently only supports Functions and it’s done via a plugin, which makes it feel a little like a second-class citizen. While I have high hopes for their &lt;a href="https://github.com/serverless/components"&gt;components&lt;/a&gt; project — that’s for another blog post.&lt;/p&gt;

&lt;p&gt;At first, I was crying out for an equivalent framework for Azure — and there still might be an argument for this approach. But as I dug deeper into functions, I’ve become the #1 fan of Visual Studio Code.&lt;/p&gt;

&lt;p&gt;With VScode, I’ve found it pretty seamless to get done everything from within the tool. This comes down to a couple of things:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VSCode Extensions and Functions v2.0 Local Runtime&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Anyone who has used VSCode will be familiar with the extension ecosystem — and the the &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-azurefunctions?WT.mc_id=blog-devto-debryen"&gt;functions extension for VSCode&lt;/a&gt; is solid. The extension relies on &lt;code&gt;azure-functions-core-tools&lt;/code&gt; which is a simple command line tool, so you can run the Azure Functions runtime locally. As an added bonus, the CLI can also be used independently of the VSCode extension.&lt;/p&gt;

&lt;p&gt;The v2.0 runtime of Azure Functions is open source and runs on .NET Core. This means that what you install on your local machine — whether Mac, Linux or Windows — is the exact same runtime as you get in the Azure Cloud. No emulators or simulators trying to mimic the behavior of the cloud provider.&lt;/p&gt;

&lt;p&gt;Using a combination of the local runtime and the extension, you can create a function project, add some functions, test and debug them locally, and then publish them to Azure — within just a few clicks or commands. Once it’s running, you can simply stream the logs directly from the function running in Azure to your terminal in VSCode.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TQ-MhVT---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AVMMw_vkW8KMMQ3dpz_m42A.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TQ-MhVT---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1600/1%2AVMMw_vkW8KMMQ3dpz_m42A.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Function Bindings
&lt;/h4&gt;

&lt;p&gt;Sadly, when people talk about serverless it often centers around Functions as a Service (&lt;em&gt;you mean a bit like this blog post, Dean?&lt;/em&gt; 😛).&lt;/p&gt;

&lt;p&gt;FaaS is just one piece of a serverless application or architecture. If you really want to make any application that’s worth talking about, it’s likely that your Functions will need to integrate and communicate with a ton of other services and systems. It could be as simple as accessing a storage container or writing to a database — either way, you can’t achieve much with just FaaS.&lt;/p&gt;

&lt;p&gt;Azure Function Bindings offers developers a simple way to integrate with a bunch of services. This is great for a couple of reasons. First, changing the database no longer requires developers to edit our business logic that sits within our function code — we can just update the binding configuration. Secondly, it just makes your code much simpler.&lt;/p&gt;

&lt;p&gt;Bindings come in two flavors&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Input — these happen before your function code is executed&lt;/li&gt;
&lt;li&gt;Output — these happen upon completion of your function code.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;There’s a vast number of &lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/functions-triggers-bindings#supported-bindings?WT.mc_id=blog-devto-debryen"&gt;bindings supported&lt;/a&gt;, and I use quite a few on a regular basis. To get started, here’s a quick and easy example that demonstrates how to use the CosmosDB bindings.&lt;/p&gt;

&lt;p&gt;One of the really nice features is that ability to configure our bindings right alongside our function code in a &lt;code&gt;function.json&lt;/code&gt; file. Here’s our input binding to fetch a document from our CosmosDB collection via it’s &lt;code&gt;id&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "name": "cosmosDBInput",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "id" : "{id}",
    "connectionStringSetting": "myCosmosDBAccount",     
    "direction": "in"
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;To interact with the binding, we just reference it by name with some super simple code below. I’m using Javascript, but any of the &lt;a href="https://docs.microsoft.com/en-us/azure/azure-functions/supported-languages?WT.mc_id=blog-devto-debryen"&gt;supported languages&lt;/a&gt; can achieve the same.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = function (context) {   
    let data = context.bindings.cosmosDBInput;
    context.log(data);
    context.done();
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;We can also do something very similar for an output binding. Below is how you could write a single document to a cosmosDB collection.&lt;/p&gt;

&lt;p&gt;First, we need the binding configuration in &lt;code&gt;function.json&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "name": "puppyData",
    "type": "cosmosDB",
    "databaseName": "MyDatabase",
    "collectionName": "MyCollection",
    "createIfNotExists": true,
    "connectionStringSetting": "myCosmosDBAccount",     
    "direction": "out"
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Next, we can simply use that binding within our function code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = function (context) {
      context.bindings.puppyData = { 
        id: 1,
        name: "Rover",
        breed: "Great Dane",
        address: "Big Dawg House, Paw Lane, London"
      };
      context.done();
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;If you’re using Functions, you’ll want to use Bindings .&lt;/p&gt;

&lt;h4&gt;
  
  
  Built in HTTP Trigger
&lt;/h4&gt;

&lt;p&gt;After working with other cloud providers, it was always necessary to spin up some form of an API Gateway in addition to my function so I could serve web requests over HTTP.&lt;/p&gt;

&lt;p&gt;I’m all for API Management and Gateway services — they can bring a lot of value to your APIs. But for some use cases they’re a little bit overkill, especially if you just want to invoke the function over HTTP natively.&lt;/p&gt;

&lt;p&gt;With Azure Functions, this feature comes out of the box. You just need to provide your function a HTTP Trigger, and then you can invoke it straight from the web.&lt;/p&gt;

&lt;p&gt;Don’t panic — this doesn’t mean just anyone and everyone can now invoke your function. You have the ability to select one of three levels of authorization for the HTTP Invocation: &lt;code&gt;anonymous&lt;/code&gt; , &lt;code&gt;function&lt;/code&gt; or &lt;code&gt;admin&lt;/code&gt;. The latter two requires a key to invoke the function via the web.&lt;/p&gt;

&lt;p&gt;Just like bindings, we can have our HTTP trigger’s configuration alongside our code in the &lt;code&gt;function.json&lt;/code&gt; file — and it looks just like bindings. Here’s an example of what your file may look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    }
]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Now you can simply reference the HTTP Trigger in your code via it’s name &lt;code&gt;req&lt;/code&gt;. One interesting thing to note — the HTTP response is actually just using the &lt;code&gt;http&lt;/code&gt; output binding.&lt;/p&gt;

&lt;h4&gt;
  
  
  Function Proxies
&lt;/h4&gt;

&lt;p&gt;While the HTTP trigger gives you a simple invocation over the web, what if you need something a little more than a HTTP Trigger — but a bit less than a full blown API Gateway?&lt;/p&gt;

&lt;p&gt;Function Proxies provide developers the ability to have a lightweight API gateway — right within your Function App. Similar to both triggers and bindings, the configuration resides alongside your code in a &lt;code&gt;proxies.json&lt;/code&gt; file. In it’s simplest form, a function proxy configuration will look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "proxy1": {
            "matchCondition": {
                "methods": ["GET"],
                "route": "/api/{test}"
            },
            "backendUri": "https://&amp;lt;AnotherApp&amp;gt;.azurewebsites.net/api/&amp;lt;FunctionName&amp;gt;"
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;In this example, we are simply routing our proxy to a function as the backend. Function Proxies also support things such as request and response overrides, so you can manipulate the HTTP requests in the same manner as most enterprise API gateways.&lt;/p&gt;

&lt;p&gt;Function Proxies are rally handy for a couple of things, especially 1) avoiding issues with cross-origin resource sharing (CORS), and 2) mocking out your API responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avoiding CORS issues&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
I build a lot of Single Page Apps (SPAs) that I host in Azure Blob Storage. Whenever I connect them to my functions, I usually encounter a CORS error since they’re hosted on different domains.&lt;/p&gt;

&lt;p&gt;There’s a couple of ways to fix this. One option is to update the CORS settings in your Function App to accept the storage container’s domain. Or … you can simply use Function Proxies for both your Functions and your Azure Blob — so you’re basically putting them on the same domain. No more CORS errors. &lt;em&gt;TADA!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To use Function Proxies to avoid CORS issues, just put the URI of your storage container as the &lt;code&gt;backendUri&lt;/code&gt; of your proxy configuration. Here’s an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "proxy1": {
            "matchCondition": {
                "methods": ["GET"],
                "route": "/"
            },
            "backendUri": "https://myserverlessapp.z6.web.core.windows.net/index.html"
        },
        "proxy2": {
            "matchCondition": {
                "methods": ["GET"],
                "route": "/media/{*restOfPath}"
            },
            "backendUri": "https://myserverlessapp.z6.web.core.windows.net/media/{*restOfPath}"
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Mocking out API responses&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Azure Functions Proxies also provides a simple way to mock responses for your API. You can basically create a Function Proxy, don’t give it a backend URI, and then you use the &lt;code&gt;requestOveride&lt;/code&gt; feature to return your mocked response. Over to you front end dev! Here’s an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "$schema": "http://json.schemastore.org/proxies",
    "proxies": {
        "proxy1": {
            "matchCondition": {
                "methods": ["GET"],
                "route": "/api/hello"
            },
            "requestOveride" : {
                "response.statusCode": "200",
                "response.body": "{ \"message\": \"Hey There\" }"
            }
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h4&gt;
  
  
  What’s your thoughts?
&lt;/h4&gt;

&lt;p&gt;I’m hoping you’ve enjoyed learning about these features — they’ve certainly made my experience as a developer using Azure Functions more enjoyable.&lt;/p&gt;

&lt;p&gt;What features are making life easier for you? What features are on your wish list for Azure Functions? I’d love to hear from you in the comments below, or connect with me on Twitter at &lt;a href="https://twitter.com/deanbryen"&gt;@deanbryen&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>cloud</category>
      <category>node</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
