techcommunity.microsoft.com Open in urlscan Pro
2a02:26f0:3100:399::207e  Public Scan

URL: https://techcommunity.microsoft.com/t5/azure-architecture-blog/leverage-azure-api-management-to-distribute-api-traffic-to/ba-p/4041813
Submission: On March 15 via api from US — Scanned from DE

Form analysis 2 forms found in the DOM

Name: form_adbb8166842c36POST https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.searchformv32.form.form

<form enctype="multipart/form-data" class="lia-form lia-form-inline SearchForm" action="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.searchformv32.form.form" method="post" id="form_adbb8166842c36" name="form_adbb8166842c36">
  <div class="t-invisible"><input value="blog-id/AzureArchitectureBlog/article-id/531" name="t:ac" type="hidden"><input value="search/contributions/page" name="t:cp" type="hidden"><input
      value="l8FrkERL13I8r0btGDrtUvRzm72GEpq0TrSksMqFrLw8v9ULa1E-E-twUo2xp4f9T6jPqRqwIc2N75yQ46knNZfAtTE6pZrA6fBqBRJWkfiGC8KtlxL8FGsyidHLp2mrI5jXdoIU5S9hJHnShz7mMjMpJVEGK99hSaNoouRBOJV628Yzju2Af7oueMaWIYisE811t2jpQIOXrFJ3aNRXVQcts1G3LparKOnV0EpeUFjmxsTZiiuuHPP5d9igt1JlFjiHWLfVcW3Kw0JQ9OWcLmZ7NmHAYKOauCww9mH89KI2OX6aXAhpbWjnsMVlwU9ualRcIkBcEwThDxh1l39hv8SGCH7UeTWUkj08wT1DXDLOpi2XqCyhfetmsQ9acOFqttzsBsncCd5xRNVZN7fYM-YfM_IdntuWH3iA90dmEKGjl9LeI-jB5Ns-HBMXChHz65zh30X-qUrskCRaP8IL7sWrMsXzjUVy5sTs_DZD88n4HjT8BcYpsFKLl8Ql5ndWH_vNDi61xxndoEdELkQ5wDkvwz5yBpaGKYSvBYlnGVZy4EEmCYuVhMlzg2vsSTus_uW0EPvw-5oR4MAmKSdpldyul8wz5EfdT44CQhmR52jWeBceOY1Gj4uesVaStIJE3btn6ZbrsShqQMajBAf3-8uVqYwebMEkpBoEwSbbBZK02NKJAzwfFAdAImJvd0L48vVrUovvMn8lWAszOYYXXhgrO6DaYWDkHbj3DvqptdRP4fYGGqtWPdZEsN0-oRh-7faNEwIn3uRFu5w0hV3KW4Tb3HgLjfuaDRJyTjDWzStScTsCOAqh2XEOcaPn3FUENAivgDwEzEvFVlYiEDYseMpLERZtsEOaKEhUjTCcwdCxNOExh77kX3oqFsf7KXCZDa9r8lqsCk4fqE0HyjVvn7VCvec49FbxHDMv0_lsK_GR3xJWOpZs-uXduY3uL2fqLe0yRb3f7CdhOj6yXxjOb4qWtYBJC-Ei70PWGnKSiPFZldp6pa9FBrkOWdFWmj-Fvi8y2ZPc9C3V7vwE1pe4gaZ5rkt4aeTEk96ncnA_oZ4UwUjW5dUJd8N3tYpl4Yn4cIdfBODjcfao3yotlzKKrbsbF4Ma5VzgBSw65N6THkA15WnPhSQck0zFOSJBlK1EcxVy7koLcLAw3wZUXWRmx_mLmxrdzH0SETl5Gcxtq7ApSZrDRN54nWNFa8Kr-wnMtCGh5V1H6JUzF-QZ8a2Ab-wjPTViR7MlLqP31raZiVbG-ZLD8CrGNIVBSDBtU0eG7e2QIuLMqeIFnjaG4CdqvA.."
      name="lia-form-context" type="hidden"><input value="BlogArticlePage:blog-id/AzureArchitectureBlog/article-id/531:searchformv32.form:" name="liaFormContentKey" type="hidden"><input
      value="yDZKQFNI0U/sd9X4pbUemqvQQZw=:H4sIAAAAAAAAALWSzUrDQBSFr4Wuigiib6DbiajdqAhFUISqweBaZibTNJpk4sxNEzc+ik8gvkQX7nwHH8CtKxfmzxJbwaTUVZhzw/nOmblP79COD+FAC6r40OAyQOWyCF0ZaMOkjtgrJgOp/NHONtER810sP9nfIkGtoCuVQ2hI+VAQpKHQqO67hEslPJcRRrUgPZaKlOOxKzx7wxIYhZtX487b+stnC5b60MnZ0junvkBY7d/QETU8GjiGlUYKnP0kRFguwEcFeAHBe02Dm0pyobWV+Wid0sbP9u7g4/G1BZCE8QWc1U3kpzapWoqZ+S+SvoMHgPQ+ypGVj/IoC2dlqHZ8CWZdV7xljUqszZa43voPYNHkFE7qGkdaqKrl1Pm7wEqmV59gcYjGkQOJP25h6jyJnOlzRv4DUURusIWhknbEsWo5K002vhzNufG1WHmDLwdzh8gDBQAA"
      name="t:formdata" type="hidden"></div>
  <div class="lia-inline-ajax-feedback">
    <div class="AjaxFeedback" id="feedback_adbb8166842c36"></div>
  </div>
  <input value="FMopJEP_U6Of3SsdMM0VJ5IQDCGR73N0dUt4AXOLBqU." name="lia-action-token" type="hidden">
  <input value="form_adbb8166842c36" id="form_UIDform_adbb8166842c36" name="form_UID" type="hidden">
  <input value="" id="form_instance_keyform_adbb8166842c36" name="form_instance_key" type="hidden">
  <span class="lia-search-input-wrapper">
    <span class="lia-search-input-field">
      <span class="lia-button-wrapper lia-button-wrapper-secondary lia-button-wrapper-searchForm-action"><input value="searchForm" name="submitContextX" type="hidden"><input class="lia-button lia-button-secondary lia-button-searchForm-action"
          value="Search" id="submitContext_adbb8166842c36" name="submitContext" type="submit" tabindex="-1"></span>
      <input placeholder="Search the community" aria-label="Search" title="Search" class="lia-form-type-text lia-autocomplete-input search-input lia-search-input-message" value="" id="messageSearchField_adbb8166842c36_0" name="messageSearchField"
        type="text" aria-autocomplete="both" autocomplete="off">
      <div class="lia-autocomplete-container" style="display: none; position: absolute;">
        <div class="lia-autocomplete-header">Enter a search word</div>
        <div class="lia-autocomplete-content">
          <ul></ul>
        </div>
        <div class="lia-autocomplete-footer">
          <a class="lia-link-navigation lia-autocomplete-toggle-off lia-link-ticket-post-action lia-component-search-action-disable-auto-complete" data-lia-action-token="QOkTXfKBSMLyY9d5F7G244WXmB18Ro1dBuXfh-8-92I." rel="nofollow" id="disableAutoComplete_adbb8166b9aa06" href="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.disableautocomplete:disableautocomplete?t:ac=blog-id/AzureArchitectureBlog/article-id/531&amp;t:cp=action/contributions/searchactions">Turn off suggestions</a>
        </div>
      </div>
      <input placeholder="Search the community" aria-label="Search" title="Search" class="lia-form-type-text lia-autocomplete-input search-input lia-search-input-tkb-article lia-js-hidden" value="" id="messageSearchField_adbb8166842c36_1"
        name="messageSearchField_0" type="text" aria-autocomplete="both" autocomplete="off">
      <div class="lia-autocomplete-container" style="display: none; position: absolute;">
        <div class="lia-autocomplete-header">Enter a search word</div>
        <div class="lia-autocomplete-content">
          <ul></ul>
        </div>
        <div class="lia-autocomplete-footer">
          <a class="lia-link-navigation lia-autocomplete-toggle-off lia-link-ticket-post-action lia-component-search-action-disable-auto-complete" data-lia-action-token="ab7rGkPSnzUgh90UQ3wVARUSXT834APu7cPOc8nSCFI." rel="nofollow" id="disableAutoComplete_adbb81678eb67f" href="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.disableautocomplete:disableautocomplete?t:ac=blog-id/AzureArchitectureBlog/article-id/531&amp;t:cp=action/contributions/searchactions">Turn off suggestions</a>
        </div>
      </div>
      <input placeholder="Enter a keyword to search within the users" ng-non-bindable="" title="Enter a user name or rank" class="lia-form-type-text UserSearchField lia-search-input-user search-input lia-js-hidden lia-autocomplete-input"
        aria-label="Enter a user name or rank" value="" id="userSearchField_adbb8166842c36" name="userSearchField" type="text" aria-autocomplete="both" autocomplete="off">
      <div class="lia-autocomplete-container" style="display: none; position: absolute;">
        <div class="lia-autocomplete-header">Enter a user name or rank</div>
        <div class="lia-autocomplete-content">
          <ul></ul>
        </div>
        <div class="lia-autocomplete-footer">
          <a class="lia-link-navigation lia-autocomplete-toggle-off lia-link-ticket-post-action lia-component-search-action-disable-auto-complete" data-lia-action-token="wC9hGoV6Yx-99nTtrkoRitqrMbAib6CmYwF0kmFy1WM." rel="nofollow" id="disableAutoComplete_adbb8167c8fcec" href="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.disableautocomplete:disableautocomplete?t:ac=blog-id/AzureArchitectureBlog/article-id/531&amp;t:cp=action/contributions/searchactions">Turn off suggestions</a>
        </div>
      </div>
      <input placeholder="Enter a keyword to search within the private messages" title="Enter a search word" class="lia-form-type-text NoteSearchField lia-search-input-note search-input lia-js-hidden lia-autocomplete-input"
        aria-label="Enter a search word" value="" id="noteSearchField_adbb8166842c36_0" name="noteSearchField" type="text" aria-autocomplete="both" autocomplete="off">
      <div class="lia-autocomplete-container" style="display: none; position: absolute;">
        <div class="lia-autocomplete-header">Enter a search word</div>
        <div class="lia-autocomplete-content">
          <ul></ul>
        </div>
        <div class="lia-autocomplete-footer">
          <a class="lia-link-navigation lia-autocomplete-toggle-off lia-link-ticket-post-action lia-component-search-action-disable-auto-complete" data-lia-action-token="sX4F1lmmh9JhPWirv5SEf89ynMeY6fRyd7c_VkqzpXo." rel="nofollow" id="disableAutoComplete_adbb8168020c05" href="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.disableautocomplete:disableautocomplete?t:ac=blog-id/AzureArchitectureBlog/article-id/531&amp;t:cp=action/contributions/searchactions">Turn off suggestions</a>
        </div>
      </div>
      <input title="Enter a search word" class="lia-form-type-text ProductSearchField lia-search-input-product search-input lia-js-hidden lia-autocomplete-input" aria-label="Enter a search word" value="" id="productSearchField_adbb8166842c36"
        name="productSearchField" type="text" aria-autocomplete="both" autocomplete="off">
      <div class="lia-autocomplete-container" style="display: none; position: absolute;">
        <div class="lia-autocomplete-header">Enter a search word</div>
        <div class="lia-autocomplete-content">
          <ul></ul>
        </div>
        <div class="lia-autocomplete-footer">
          <a class="lia-link-navigation lia-autocomplete-toggle-off lia-link-ticket-post-action lia-component-search-action-disable-auto-complete" data-lia-action-token="YvqIOskUpjDQDpKoPvwi10XgRWdVWQWQapMmNeqDgAY." rel="nofollow" id="disableAutoComplete_adbb816838e389" href="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.disableautocomplete:disableautocomplete?t:ac=blog-id/AzureArchitectureBlog/article-id/531&amp;t:cp=action/contributions/searchactions">Turn off suggestions</a>
        </div>
      </div>
      <input class="lia-as-search-action-id" name="as-search-action-id" type="hidden">
    </span>
  </span>
  <span class="lia-cancel-search" tabindex="0">cancel</span>
</form>

Name: formPOST https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.searchformv32.form.form

<form enctype="multipart/form-data" class="lia-form lia-form-inline SearchForm" action="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.searchformv32.form.form" method="post" id="form" name="form">
  <div class="t-invisible"><input value="blog-id/AzureArchitectureBlog/article-id/531" name="t:ac" type="hidden"><input value="search/contributions/page" name="t:cp" type="hidden"><input
      value="wcQRemnGdWQoJ-bzMD33xtQjOtOU8goHN7124dw14CqylCVD_Jcdqk4J1YuqUPew5ZqwOuDJqjSKHXYN55b_aViG23VDhlfkMYLW1AJXgL9ilwV2ZeeeB2mxCmyfWsHHAB9qmD9nL9Xam4jlVu3qrhXZe2tFYeAPLyAvtn3SFFv5aATOYjNU3tUDVp8RZT0BY81j4KPhHkLDUCA9NnsPH1FXS33zbB8RocCKSGIu2xxYXYExbUf2SEoToc6yJZAeyxwWMbdSzMAlijYJjkR1C8z4iHTMla9kjlgXV9qRYBb4whtV0_39D3H8Cvy7yj6YRznW6Gen6l_j2YyL_M7FM4FmCyAXCcxy01Je0eTn_L8pkJqUZJ9xYvg2ycNFG_nzWaEMtfQZBO3Hb5YmW8AL0cjj4qbjXv6t_6LDlnSqFvXDrTYW6Br5MHoTKSdUPAs127Y6lmjJmGucBTXA1lGpIPWc927SDl9eiUvFpir4VEl_VtB2WqFFUgzxTXpo9AQisSXVnaNW5qpkshy8dAG5B-00zTPqW6ybm88YJ-nhfNB1KJ7bNJLfMKsSiKayrDZFC4ZdUY4NO9ywl0ERgPb12v2e4PjkBbxoJK2Uh3dwrkgs58koAr5KGuUI7D3rLDT-lrlFgyhOTOZKKYUJ7N1xFsftEMM-30FrZnGwg9QsiJcP13nvO_Qf_VYvsqHhwO2xpkzXZLK77y4dw3ExgCLWSz0ymskcneYx1ypajj6ElOXjk44mdqwWGP6mKyarlPeC9qrDjigfcVCq_hEVjb8sQ1VWK1K4wEBLSPNXeE1JIUJ_D0GfO6GwaP5_ZOhHtn2QqoZvyLxsjzOSZQbuZkEuTWjzcf1hQwzdjEBHZMvxa435Gi7nSwCbjihvqa-kqX90yUDq3yrlIsrhcaB356YM769W-D8nUdSG6Oj16qfvVseNC_FDyFQSZ12uwIAfZWO9LhRhMqSX6Uh8QLGkOiFkIlKk7xXWKhSIXjYF_zODcdgK044HC5lXq9PNZaTFQNhVVIVRFFtDpRo8Nujuw7Uulmv6Q7Py_3IV3zUecst3XTsgvakarT2fBPvKuMB50P3MHf9bcdeoO-b73NVRDZAv3NMh8KDGm4EgWQ2okuaGfYLw5XQHjIcwG7b_F2JW_cLDB9_4f1WfWunuiuSywQpQg4RGBozLaeWKz2A_sbXSYTI."
      name="lia-form-context" type="hidden"><input value="BlogArticlePage:blog-id/AzureArchitectureBlog/article-id/531:searchformv32.form:" name="liaFormContentKey" type="hidden"><input
      value="yDZKQFNI0U/sd9X4pbUemqvQQZw=:H4sIAAAAAAAAALWSzUrDQBSFr4Wuigiib6DbiajdqAhFUISqweBaZibTNJpk4sxNEzc+ik8gvkQX7nwHH8CtKxfmzxJbwaTUVZhzw/nOmblP79COD+FAC6r40OAyQOWyCF0ZaMOkjtgrJgOp/NHONtER810sP9nfIkGtoCuVQ2hI+VAQpKHQqO67hEslPJcRRrUgPZaKlOOxKzx7wxIYhZtX487b+stnC5b60MnZ0junvkBY7d/QETU8GjiGlUYKnP0kRFguwEcFeAHBe02Dm0pyobWV+Wid0sbP9u7g4/G1BZCE8QWc1U3kpzapWoqZ+S+SvoMHgPQ+ypGVj/IoC2dlqHZ8CWZdV7xljUqszZa43voPYNHkFE7qGkdaqKrl1Pm7wEqmV59gcYjGkQOJP25h6jyJnOlzRv4DUURusIWhknbEsWo5K002vhzNufG1WHmDLwdzh8gDBQAA"
      name="t:formdata" type="hidden"></div>
  <div class="lia-inline-ajax-feedback">
    <div class="AjaxFeedback" id="feedback"></div>
  </div>
  <input value="Oq0T1B3ZJf8fFw7YSZ3_97SkKDjXbK9T41vmjwLpp10." name="lia-action-token" type="hidden">
  <input value="form" id="form_UIDform" name="form_UID" type="hidden">
  <input value="" id="form_instance_keyform" name="form_instance_key" type="hidden">
  <span class="lia-search-input-wrapper">
    <span class="lia-search-input-field">
      <span class="lia-button-wrapper lia-button-wrapper-secondary lia-button-wrapper-searchForm-action"><input value="searchForm" name="submitContextX" type="hidden"><input class="lia-button lia-button-secondary lia-button-searchForm-action"
          value="Search" id="submitContext" name="submitContext" type="submit" tabindex="-1"></span>
      <input placeholder="Search the community" aria-label="Search" title="Search" class="lia-form-type-text lia-autocomplete-input search-input lia-search-input-message" value="" id="messageSearchField_0" name="messageSearchField" type="text"
        aria-autocomplete="both" autocomplete="off">
      <div class="lia-autocomplete-container" style="display: none; position: absolute;">
        <div class="lia-autocomplete-header">Enter a search word</div>
        <div class="lia-autocomplete-content">
          <ul></ul>
        </div>
        <div class="lia-autocomplete-footer">
          <a class="lia-link-navigation lia-autocomplete-toggle-off lia-link-ticket-post-action lia-component-search-action-disable-auto-complete" data-lia-action-token="G_gsfkZ62KtWbLn-jmG_wgTWDfVJTSgn_gE7MB5Drcw." rel="nofollow" id="disableAutoComplete_adbb8168caeffb" href="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.disableautocomplete:disableautocomplete?t:ac=blog-id/AzureArchitectureBlog/article-id/531&amp;t:cp=action/contributions/searchactions">Turn off suggestions</a>
        </div>
      </div>
      <input placeholder="Search the community" aria-label="Search" title="Search" class="lia-form-type-text lia-autocomplete-input search-input lia-search-input-tkb-article lia-js-hidden" value="" id="messageSearchField_1"
        name="messageSearchField_0" type="text" aria-autocomplete="both" autocomplete="off">
      <div class="lia-autocomplete-container" style="display: none; position: absolute;">
        <div class="lia-autocomplete-header">Enter a search word</div>
        <div class="lia-autocomplete-content">
          <ul></ul>
        </div>
        <div class="lia-autocomplete-footer">
          <a class="lia-link-navigation lia-autocomplete-toggle-off lia-link-ticket-post-action lia-component-search-action-disable-auto-complete" data-lia-action-token="RsQQ6jzv6UDrc0cAjaNqF4B6bPsjUcwQIROc5pdeH-A." rel="nofollow" id="disableAutoComplete_adbb8168fde10e" href="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.disableautocomplete:disableautocomplete?t:ac=blog-id/AzureArchitectureBlog/article-id/531&amp;t:cp=action/contributions/searchactions">Turn off suggestions</a>
        </div>
      </div>
      <input placeholder="Enter a keyword to search within the users" ng-non-bindable="" title="Enter a user name or rank" class="lia-form-type-text UserSearchField lia-search-input-user search-input lia-js-hidden lia-autocomplete-input"
        aria-label="Enter a user name or rank" value="" id="userSearchField" name="userSearchField" type="text" aria-autocomplete="both" autocomplete="off">
      <div class="lia-autocomplete-container" style="display: none; position: absolute;">
        <div class="lia-autocomplete-header">Enter a user name or rank</div>
        <div class="lia-autocomplete-content">
          <ul></ul>
        </div>
        <div class="lia-autocomplete-footer">
          <a class="lia-link-navigation lia-autocomplete-toggle-off lia-link-ticket-post-action lia-component-search-action-disable-auto-complete" data-lia-action-token="sxOUKXeP4vKmIgVKgLg4lw9nGfPp7kaClcJGWnSf4nc." rel="nofollow" id="disableAutoComplete_adbb81692e97d0" href="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.disableautocomplete:disableautocomplete?t:ac=blog-id/AzureArchitectureBlog/article-id/531&amp;t:cp=action/contributions/searchactions">Turn off suggestions</a>
        </div>
      </div>
      <input placeholder="Enter a keyword to search within the private messages" title="Enter a search word" class="lia-form-type-text NoteSearchField lia-search-input-note search-input lia-js-hidden lia-autocomplete-input"
        aria-label="Enter a search word" value="" id="noteSearchField_0" name="noteSearchField" type="text" aria-autocomplete="both" autocomplete="off">
      <div class="lia-autocomplete-container" style="display: none; position: absolute;">
        <div class="lia-autocomplete-header">Enter a search word</div>
        <div class="lia-autocomplete-content">
          <ul></ul>
        </div>
        <div class="lia-autocomplete-footer">
          <a class="lia-link-navigation lia-autocomplete-toggle-off lia-link-ticket-post-action lia-component-search-action-disable-auto-complete" data-lia-action-token="UcaN9_CbQWSLBbBS47YEncrC0AQR1j71R2mRCg-UM3I." rel="nofollow" id="disableAutoComplete_adbb816969a31d" href="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.disableautocomplete:disableautocomplete?t:ac=blog-id/AzureArchitectureBlog/article-id/531&amp;t:cp=action/contributions/searchactions">Turn off suggestions</a>
        </div>
      </div>
      <input title="Enter a search word" class="lia-form-type-text ProductSearchField lia-search-input-product search-input lia-js-hidden lia-autocomplete-input" aria-label="Enter a search word" value="" id="productSearchField"
        name="productSearchField" type="text" aria-autocomplete="both" autocomplete="off">
      <div class="lia-autocomplete-container" style="display: none; position: absolute;">
        <div class="lia-autocomplete-header">Enter a search word</div>
        <div class="lia-autocomplete-content">
          <ul></ul>
        </div>
        <div class="lia-autocomplete-footer">
          <a class="lia-link-navigation lia-autocomplete-toggle-off lia-link-ticket-post-action lia-component-search-action-disable-auto-complete" data-lia-action-token="98flqIkYuZmcv23PA8yu6_gAYujlMO7Xidmf3TnSSY0." rel="nofollow" id="disableAutoComplete_adbb816998dbd7" href="https://techcommunity.microsoft.com/t5/blogs/v2/blogarticlepage.disableautocomplete:disableautocomplete?t:ac=blog-id/AzureArchitectureBlog/article-id/531&amp;t:cp=action/contributions/searchactions">Turn off suggestions</a>
        </div>
      </div>
      <input class="lia-as-search-action-id" name="as-search-action-id" type="hidden">
    </span>
  </span>
  <span class="lia-cancel-search">cancel</span>
</form>

Text Content

We use optional cookies to improve your experience on our websites, such as
through social media connections, and to display personalized advertising based
on your online activity. If you reject optional cookies, only cookies necessary
to provide you the services will be used. You may change your selection by
clicking “Manage Cookies” at the bottom of the page. Privacy Statement
Third-Party Cookies

Accept Reject Manage cookies


Skip to Main Content

Microsoft

Tech Community

Home

Community Hubs

Community Hubs
 * Community Hubs Home
 * Products
 * Special Topics
 * Video Hub

Close


PRODUCTS (49)


SPECIAL TOPICS (27)


VIDEO HUB (460)


MOST ACTIVE HUBS

Microsoft 365
Microsoft Teams
Windows
Outlook
Security, Compliance and Identity
SharePoint
Azure
Windows Server
Exchange
Intune and Configuration Manager
Microsoft Edge Insider
OneDrive
Microsoft Viva
Connect and learn from experts and peers
Microsoft FastTrack
Best practices and the latest news on Microsoft FastTrack
Microsoft Sales Copilot
A role-based copilot designed for sellers


MOST ACTIVE HUBS

Education Sector
ITOps Talk
AI and Machine Learning
Microsoft Mechanics
Microsoft Partner Community
Healthcare and Life Sciences
Internet of Things (IoT)
Public Sector
Mixed Reality
Small and Medium Business
Startups at Microsoft
Azure Partner Community
Expand your Azure partner-to-partner network
Microsoft Tech Talks
Bringing IT Pros together through In-Person & Virtual events
MVP Award Program
Find out more about the Microsoft MVP Award Program.


VIDEO HUB

Azure
Exchange
Microsoft 365
Microsoft 365 Business
Microsoft 365 Enterprise
Microsoft Edge
Microsoft Outlook
Microsoft Teams
Security
SharePoint
Windows
Browse All Community Hubs

Blogs

Blogs

Events

Events
 * Events Home
 * Microsoft Ignite
 * Microsoft Build
 * Community Events

Microsoft Learn

Microsoft Learn
 * Home
 * Community
 * Blog
 * Azure
 * Dynamics 365
 * Microsoft 365
 * Security, Compliance & Identity
 * Power Platform
 * Github
 * Teams
 * .NET


Lounge

Lounge
 * 1.3M Members
 * 8,018 Online
 * 323K Discussions

Search
Enter a search word

Turn off suggestions
Enter a search word

Turn off suggestions
Enter a user name or rank

Turn off suggestions
Enter a search word

Turn off suggestions
Enter a search word

Turn off suggestions
cancel
Turn on suggestions
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Sign In

Sign In





Enter a search word

Turn off suggestions
Enter a search word

Turn off suggestions
Enter a user name or rank

Turn off suggestions
Enter a search word

Turn off suggestions
Enter a search word

Turn off suggestions
cancel
Turn on suggestions
Showing results for 
Show  only  | Search instead for 
Did you mean: 



 * Home
 * Azure
 * Azure Architecture Blog
 * Leverage Azure API Management to distribute API traffic to multiple backend
   services

 * Back to Blog
 * Newer Article
 * Older Article


Leverage Azure API Management to distribute API traffic to multiple backend
services
 * Subscribe to RSS Feed
 * 
 * Mark as New
 * Mark as Read
 * 
 * Bookmark
 * Subscribe
 * 
 * Printer Friendly Page
 * Report Inappropriate Content


By
Aki Nishikawa
Published Jan 28 2024 07:53 PM 1,936 Views
Listen to the article
00:0000:00
00:00
Powered by

undefined
Logico_jp
Microsoft
‎Jan 28 2024 07:53 PM


LEVERAGE AZURE API MANAGEMENT TO DISTRIBUTE API TRAFFIC TO MULTIPLE BACKEND
SERVICES

‎Jan 28 2024 07:53 PM

This is a summarized edition of the following original articles, both of which
were published in Japanese. This is a memo as of 27 January 2024.

Azure API Managementのバックエンドプール – Logico Inside (logico-jp.io)

Azure API Managementのバックエンドでサーキットブレーカーを構成する – Logico Inside (logico-jp.io)

 

Circuit breaker and load balanced pool features have recently been added to the
API Management backend. Both are in public preview as of 27 January 2024.

Azure API Management backends | Microsoft Learn

 

In public preview, we must use either Bicep, ARM, or REST APIs
(2023-05-01-preview or later) to configure circuit breakers and load-balanced
pools. There is no command for either CLI or PowerShell and there is no
dedicated configuration page in Azure Portal.

Backend - REST API (Azure API Management) | Microsoft Learn

Microsoft.ApiManagement/service/backends 2023-05-01-preview - Bicep, ARM
template & Terraform AzAPI ...

 


LOAD-BALANCED POOL

Previously a backend could only contain one endpoint of a backend service. If we
need to distribute traffic to multiple backend services, we need to provision
and deploy an L4/L7 load balancer in front of the backend services.
Load-balanced pool allows us to distribute request traffic to multiple backend
services without managed/unmanaged load balancer. This feature has already been
included in other API gateway products, but finally this comes to Azure API
Management.


LIMITATION

There are some limitations as of 27 January 2024.

 1. Round-robin is the only load balancing option. (We hope that other load
    balancing methods will be implemented in GA.)
 2. As mentioned in the documentation, an API Management instance with Developer
    and Premium SKUs deployed in an internal virtual network may throw HTTP
    500 BackendConnectionFailure errors when the gateway endpoint URL and
    backend URL are the same. Please refer to the following URL for more
    details.
    Azure API Management backends | Microsoft Learn
 3. Nested load-balanced pools are not supported.



 


CIRCUIT BREAKER

Another feature, circuit breaker, is a common pattern for preventing an
application from repeatedly trying to perform an operation that’s likely to
fail. Previously we had to implement a circuit breaker in backend service(s) by
ourselves, but we don’t have to implement this feature.

Circuit Breaker pattern - Azure Architecture Center | Microsoft Learn

 


LIMITATION

Some limitations are found as of January 27, 2024.

 1. Backend circuit breaker is not supported in the API Management Consumption
    SKU.
 2. “Half-open” state of circuit breaker is not supported.

Please refer to “NOTE” in the document for more details.

Azure API Management backends | Microsoft Learn

 


CONFIGURATION


PREPARATION

The following endpoints will be used for the backend.

 * <URL1>/api/test
 * <URL2>/api/test

For the API frontend, we use the following configuration.

<APIM's URL>/suffix/foo

In this case, requests will normally be routed to the following URL, unless no
change is made to the routing endpoint in inbound section.

<URL1 or URL2>/api/test/foo


CIRCUIT BREAKERS

To configure a circuit breaker for backend, the following JSON is published via
REST API. Needless to say, we can configure the circuit breaker with ARM and
Bicep.

 

{
  "type": "Microsoft.ApiManagement/service/backends",
  "apiVersion": "2023-05-01-preview",
  "name": "test1",
  "properties": {
    "description": "backend (test1)",
    "type": "Single",
    "protocol": "http",
    "url": "<URL1>/api/test",
    "circuitBreaker": {
      "rules": [
        {
          "failureCondition": {
            "count": "3",
            "errorReasons": [
              "Server errors"
            ],
            "interval": "PT5M",
            "statusCodeRanges": [
              {
                "min": "500",
                "max": "599"
              }
            ]
          },
          "name": "myBreakerRule",
          "tripDuration": "PT10M"
        }
      ]
    }
  }
}

 

Regarding properties.circuitBreaker.rules.failureCondition.interval and properties.circuitBreaker.rules.tripDuration,
both should follow ISO8601 duration specification. In case of the example
above, interval (duration to collect the number of errors) is 5 minutes,
and tripDuration (duration during which circuit breaker is tripped) is 10
minutes.

A same configuration should be made for test2.

 


LOAD-BALANCED POOL

We will use the two backends configured in the last section to configure the
load-balanced pool. Although, properties.url is mandatory, specified URL is
meaningless. In this case, it is okay to
specify http://localhost to properties.url. Also note that Pool should be
specified in properties.type, instead of Single. The following JSON is then
posted via REST API. As I mentioned in the last section, we can also use ARM and
Bicep.

 

{
    "type": "Microsoft.ApiManagement/service/backends",
    "apiVersion": "2023-05-01-preview",
    "name": "backendPool",
    "properties": {
        "description": "Load balanced backends",
        "type": "Pool",
        "protocol": "http",
        "url": "http://localhost",
        "pool": {
            "services": [
                {
                    "id": "/backends/test1"
                },
                {
                    "id": "/backends/test2"
                }
            ]
        }
    }
}

 

That’s it. Now it is time to test.

 


LET’S TRY IT.

In this example, the backend test2 always returns HTTP 503 (Service
Unavailable). I called the API every 5 seconds to observe behaviours using the
APIM request tracing feature.

Tutorial - Debug APIs in Azure API Management using request tracing | Microsoft
Learn

 

After 6 API calls, the circuit breaker is tripped since test2 returns
HTTP 503 (Service Unavailable) error 3 times.

At the 7th or 8th call, the API request would normally be routed to the
backend test2 in the load-balanced pool, but the request is only routed to the
backend test1 because APIM detects that the circuit breaker of the
backend test2 is tripped. 10 minutes later, the circuit breaker stops tripping,
and the normal state is resumed; the load-balanced pool is distributing API
requests to the one of backends in the pool.




HOW ABOUT USING THESE FEATURES WITH RETRY POLICY?

If we use a load-balanced pool and a circuit breaker with retry policy
in backend section, we can configure the routing of API requests in a more
sophisticated way. As I wrote in the following entry, we can configure fallback
more easily, similar to configuring with L7 load balancer.

Use Azure API Management policies to configure retry and fall back to another
instance based on HTTP...

 

If we use both features introduced to backends with retry policy, all we need to
do is slightly modify the original policy configuration in the URL above, which
is for request distribution to one of the Azure OpenAI Service instances, to use
load-balanced pool and specify it as a backend service. Here is the example of
policy configuration.

 

<!-- retryCount is specified in Named Values. -->
<!-- Load-balanced pool "backendPool4AOAI" is already configured -->
<policies>
    <inbound>
        <base />
        <set-backend-service backend-id="backendPool4AOAI" />
        <set-variable name="retryCount" value="@(int.Parse(" {{retryCount}}"))" />
        <set-variable name="maxRetryCount" value="@((int)context.Variables[" retryCount"] -1)" />
        <authentication-managed-identity resource="https://cognitiveservices.azure.com"
            output-token-variable-name="msi-access-token"ignore-error="false" />
        <set-header name="Authorization" exists-action="override">
            <value>@("Bearer " + (string)context.Variables["msi-access-token"])</value>
        </set-header>
    </inbound>
    <backend>
        <retry condition="@(context.Response.StatusCode >= 300)" count="@((int)context.Variables[" maxRetryCount"])"
            interval="1" max-interval="10" delta="1" first-fast-retry="false">
            <!-- forward request and request body is stored for retry -->
            <forward-request buffer-request-body="true" />
        </retry>
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

 

This policy configuration meets the requirements shown below.




CONCLUSION

Previously backends did not have load balancing or circuit breaker
functionality, but now both of them have been added to Azure API Management. We
hope that both will reach GA soon and we will be able to route API requests to
backends in a more sophisticated way.

Aki Nishikawa


1 Like
Like





You must be a registered user to add a comment. If you've already registered,
sign in. Otherwise, register and sign in.

 * Comment

Co-Authors
Logico_jp

Version history
Last update:
‎Jan 28 2024 07:55 PM
Updated by:
Logico_jp




SHARE

 * Share to LinkedIn
 * Share to Facebook
 * Share to Twitter
 * Share to Reddit
 * Share to Email




Browse

Skip to Primary Navigation
What's new
 * Surface Pro 9
 * Surface Laptop 5
 * Surface Studio 2+
 * Surface Laptop Go 2
 * Surface Laptop Studio
 * Surface Duo 2
 * Microsoft 365
 * Windows 11 apps

Microsoft Store
 * Account profile
 * Download Center
 * Microsoft Store support
 * Returns
 * Order tracking
 * Virtual workshops and training
 * Microsoft Store Promise
 * Flexible Payments

Education
 * Microsoft in education
 * Devices for education
 * Microsoft Teams for Education
 * Microsoft 365 Education
 * Education consultation appointment
 * Educator training and development
 * Deals for students and parents
 * Azure for students

Business
 * Microsoft Cloud
 * Microsoft Security
 * Dynamics 365
 * Microsoft 365
 * Microsoft Power Platform
 * Microsoft Teams
 * Microsoft Industry
 * Small Business

Developer & IT
 * Azure
 * Developer Center
 * Documentation
 * Microsoft Learn
 * Microsoft Tech Community
 * Azure Marketplace
 * AppSource
 * Visual Studio

Company
 * Careers
 * About Microsoft
 * Company news
 * Privacy at Microsoft
 * Investors
 * Diversity and inclusion
 * Accessibility
 * Sustainability

California Consumer Privacy Act (CCPA) Opt-Out Icon Your Privacy Choices
 * Sitemap
 * Contact Microsoft
 * Privacy
 * Manage cookies
 * Terms of use
 * Trademarks
 * Safety & eco
 * About our ads
 * © Microsoft 2024

Auto-suggest helps you quickly narrow down your search results by suggesting
possible matches as you type.

Auto-suggest helps you quickly narrow down your search results by suggesting
possible matches as you type.