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
Submission: On March 15 via api from US — Scanned from DE
Form analysis
2 forms found in the DOMName: form_adbb8166842c36 — POST 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&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&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&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&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&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: form — POST 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&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&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&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&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&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.