{"id":106397,"date":"2025-04-23T12:00:00","date_gmt":"2025-04-23T12:00:00","guid":{"rendered":"https:\/\/www.red-gate.com\/simple-talk\/?p=106397"},"modified":"2025-04-22T23:32:00","modified_gmt":"2025-04-22T23:32:00","slug":"azure-function-api-rate-limits-how-nat-gateway-helps-you-stay-under-the-radar","status":"publish","type":"post","link":"https:\/\/www.red-gate.com\/simple-talk\/blogs\/azure-function-api-rate-limits-how-nat-gateway-helps-you-stay-under-the-radar\/","title":{"rendered":"Azure Function &amp; API Rate Limits: How NAT Gateway Helps You Stay Under the Radar"},"content":{"rendered":"\n<p>Rate limit is common when consuming API&#8217;s: They control how many calls you can make in an interval of time.<\/p>\n\n\n\n<p>I faced one challenge with the rate limit recently:<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> My Azure function calls an external API <\/li>\n\n\n\n<li> The rate limit is defined by source IP &#8211; which is the outbound IP of the Azure function <\/li>\n\n\n\n<li> The calls are fast as real-time streaming <\/li>\n<\/ul>\n<\/div>\n\n\n<p>Out of the blue, the rate limit started to be reached. Why it was out of the blue and random I will not include here in this blog.<\/p>\n\n\n\n<p>The point is we have little to no control about what outbound IP our <strong>Azure function<\/strong> will use. It gets one from a range of IPs available for azure functions.<\/p>\n\n\n\n<p>I had to put the control of the outbound IPs in my hand and make a pooling of outbound IPs to work around the rate limit.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-solution\">The Solution<\/h2>\n\n\n\n<p>We can use a <strong>virtual network<\/strong> to control how the requests flow from my azure tenant to the internet.<\/p>\n\n\n\n<p>A virtual network supports <strong>NAT Gateway<\/strong>. NAT means <strong>Network Address Translator<\/strong>. This means this guy stays in the middle of what&#8217;s in my virtual network and what&#8217;s out. It defines the outbound address and translates between the internal address and the outbound address in both directions.<\/p>\n\n\n\n<p>However, an Azure function is a PaaS by default, it&#8217;s not part of a virtual network.<\/p>\n\n\n\n<p>The secret: it can be. We can link either the azure function input or output or both to the virtual network, making the communication pass through the NAT Gateway.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"641\" height=\"614\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-2.png\" alt=\"Article content\" class=\"wp-image-106398\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-2.png 641w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-2-300x287.png 300w\" sizes=\"auto, (max-width: 641px) 100vw, 641px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-steps-for-the-solution\">Steps for the Solution<\/h2>\n\n\n\n<p>These are the steps to configure this solution:<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Create a virtual network with a subnet <\/li>\n\n\n\n<li> Create an IP Prefix &#8211; a pool of public IPs <\/li>\n\n\n\n<li> Create a NAT gateway using the IP Prefix and linked to the subnet <\/li>\n\n\n\n<li> Configure the azure function network to use the virtual network as output. <\/li>\n<\/ul>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-security-and-governance\">Security and Governance<\/h2>\n\n\n\n<p>We are talking about cloud network configuration.<\/p>\n\n\n\n<p>Usually, in an ideal scenario, the cloud network would have been planned way ahead this point. Your company should have a team to manage it.<\/p>\n\n\n\n<p>In this situation, you should talk to them and request the implementation of this solution.<\/p>\n\n\n\n<p>The steps provided here are focused on illustrating the solution. In many situations your company cloud network management may require different steps.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-creating-the-virtual-network-for-the-azure-function\">Creating the Virtual Network For the Azure Function<\/h2>\n\n\n\n<p>These are the steps to create a virtual network:<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> In Azure marketplace, choose virtual network <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1380\" height=\"1000\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-3.png\" alt=\"Article content\" class=\"wp-image-106399\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-3.png 1380w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-3-300x217.png 300w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-3-1024x742.png 1024w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-3-768x557.png 768w\" sizes=\"auto, (max-width: 1380px) 100vw, 1380px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click the Create button <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"748\" height=\"481\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-4.png\" alt=\"Article content\" class=\"wp-image-106400\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-4.png 748w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-4-300x193.png 300w\" sizes=\"auto, (max-width: 748px) 100vw, 748px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Choose the region &#8211; it needs to be the same region as your function <\/li>\n\n\n\n<li> Choose the resource group <\/li>\n\n\n\n<li> Choose the vnet name <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"871\" height=\"1000\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-5.png\" alt=\"Article content\" class=\"wp-image-106401\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-5.png 871w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-5-261x300.png 261w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-5-768x882.png 768w\" sizes=\"auto, (max-width: 871px) 100vw, 871px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click Next twice. I will not go through additional security issues <\/li>\n\n\n\n<li> Choose the IP range. It should not overlap with any existing vnet, otherwise you will be creating a future problem <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"876\" height=\"1000\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-6.png\" alt=\"Article content\" class=\"wp-image-106402\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-6.png 876w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-6-263x300.png 263w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-6-768x877.png 768w\" sizes=\"auto, (max-width: 876px) 100vw, 876px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click Review + Create <\/li>\n<\/ul>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-creating-the-ip-prefix\">Creating the IP Prefix<\/h2>\n\n\n\n<p>These are the steps to create the IP Prefix:<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> On the marketplace, look for IP Prefix <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1018\" height=\"1000\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-7.png\" alt=\"Article content\" class=\"wp-image-106403\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-7.png 1018w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-7-300x295.png 300w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-7-768x754.png 768w\" sizes=\"auto, (max-width: 1018px) 100vw, 1018px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click Create <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"740\" height=\"469\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-8.png\" alt=\"Article content\" class=\"wp-image-106404\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-8.png 740w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-8-300x190.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Choose the region &#8211; it needs to be the same as the virtual network and function <\/li>\n\n\n\n<li> Choose the resource group <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"901\" height=\"1000\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-9.png\" alt=\"Article content\" class=\"wp-image-106405\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-9.png 901w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-9-270x300.png 270w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-9-768x852.png 768w\" sizes=\"auto, (max-width: 901px) 100vw, 901px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Choose the prefix size. It defines how many IPs we will have in the pool <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1172\" height=\"271\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-10.png\" alt=\"Article content\" class=\"wp-image-106406\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-10.png 1172w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-10-300x69.png 300w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-10-1024x237.png 1024w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-10-768x178.png 768w\" sizes=\"auto, (max-width: 1172px) 100vw, 1172px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n\n<p>Prefix ownership allows you to use <a href=\"https:\/\/azure.microsoft.com\/en-us\/blog\/bring-your-own-ip-addresses-byoip-to-azure-with-custom-ip-prefix\/\" target=\"_self\" rel=\"noopener\"><strong>BYOIP<\/strong><\/a>. This is beyond this blog.<\/p>\n\n\n\n<p><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/virtual-network\/ip-services\/routing-preference-overview\" target=\"_self\" rel=\"noopener\"><strong>Routing preference affects a choice between security and cost<\/strong><\/a>. The default is for security. The details are beyond this blog<\/p>\n\n\n\n<p><a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/reliability\/availability-zones-overview?tabs=azure-cli\" target=\"_self\" rel=\"noopener\"><strong>Availability Zone<\/strong><\/a> and Tier are two configurations for <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/load-balancer\/cross-region-overview\" target=\"_self\" rel=\"noopener\"><strong>high availability of the IP Prefix<\/strong><\/a>. The details are beyond this blog<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click Review + Create <\/li>\n<\/ul>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-creating-the-nat-gateway-for-the-azure-function\">Creating the NAT Gateway For the Azure Function<\/h2>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Look for NAT Gateway on Azure Marketplace <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1027\" height=\"1000\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-11.png\" alt=\"Article content\" class=\"wp-image-106407\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-11.png 1027w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-11-300x292.png 300w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-11-1024x997.png 1024w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-11-768x748.png 768w\" sizes=\"auto, (max-width: 1027px) 100vw, 1027px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click Create <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"726\" height=\"461\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-12.png\" alt=\"Article content\" class=\"wp-image-106408\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-12.png 726w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-12-300x190.png 300w\" sizes=\"auto, (max-width: 726px) 100vw, 726px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Select the region, resource group and give a name to the NAT Gateway <\/li>\n<\/ul>\n<\/div>\n\n\n<p>The region needs to be the same as the other objects. You can also choose the <a href=\"https:\/\/learn.microsoft.com\/en-us\/azure\/reliability\/availability-zones-overview?tabs=azure-cli\" target=\"_self\" rel=\"noopener\"><strong>availability zone<\/strong><\/a>, but I will not go into details about this.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1170\" height=\"867\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-13.png\" alt=\"Article content\" class=\"wp-image-106409\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-13.png 1170w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-13-300x222.png 300w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-13-1024x759.png 1024w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-13-768x569.png 768w\" sizes=\"auto, (max-width: 1170px) 100vw, 1170px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click Next <\/li>\n\n\n\n<li> Choose the IP Prefix you created <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1172\" height=\"543\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-14.png\" alt=\"Article content\" class=\"wp-image-106410\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-14.png 1172w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-14-300x139.png 300w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-14-1024x474.png 1024w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-14-768x356.png 768w\" sizes=\"auto, (max-width: 1172px) 100vw, 1172px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click Next <\/li>\n\n\n\n<li> Choose the virtual network and subnet you created <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1160\" height=\"415\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-15.png\" alt=\"Article content\" class=\"wp-image-106411\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-15.png 1160w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-15-300x107.png 300w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-15-1024x366.png 1024w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-15-768x275.png 768w\" sizes=\"auto, (max-width: 1160px) 100vw, 1160px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click Review + Create <\/li>\n<\/ul>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-configuring-the-azure-function-output\">Configuring the Azure Function output<\/h2>\n\n\n\n<p>These are the steps to make the function configuration:<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Open the azure function <\/li>\n\n\n\n<li> Go to networking <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"396\" height=\"535\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-16.png\" alt=\"Article content\" class=\"wp-image-106412\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-16.png 396w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-16-222x300.png 222w\" sizes=\"auto, (max-width: 396px) 100vw, 396px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> On the Outbound traffic configuration, click virtual network integration <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"728\" height=\"549\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-17.png\" alt=\"Article content\" class=\"wp-image-106413\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-17.png 728w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-17-300x226.png 300w\" sizes=\"auto, (max-width: 728px) 100vw, 728px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click Add Virtual Network Integration <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"582\" height=\"485\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-18.png\" alt=\"Article content\" class=\"wp-image-106414\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-18.png 582w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-18-300x250.png 300w\" sizes=\"auto, (max-width: 582px) 100vw, 582px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Select the Virtual Network <\/li>\n\n\n\n<li> Select the Subnet <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"890\" height=\"429\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-19.png\" alt=\"Article content\" class=\"wp-image-106415\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-19.png 890w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-19-300x145.png 300w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-19-768x370.png 768w\" sizes=\"auto, (max-width: 890px) 100vw, 890px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click Connect <\/li>\n<\/ul>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"h-check-the-results\">Check the results<\/h2>\n\n\n\n<p>We can check the results of the configuration by monitoring the NAT Gateway:<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Open the NAT Gateway <\/li>\n\n\n\n<li> Click on Insights <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"276\" height=\"201\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-21.png\" alt=\"Article content\" class=\"wp-image-106417\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n<div class=\"block-core-list\">\n<ul class=\"wp-block-list\">\n<li> Click on View Detailed Metrics <\/li>\n<\/ul>\n<\/div>\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"744\" height=\"147\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-23.png\" alt=\"Article content\" class=\"wp-image-106419\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-23.png 744w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-23-300x59.png 300w\" sizes=\"auto, (max-width: 744px) 100vw, 744px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n\n<p>If your function is active and receiving calls, you will immediatelly see the inboud and outbound data.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1429\" height=\"324\" src=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-24.png\" alt=\"Article content\" class=\"wp-image-106420\" srcset=\"https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-24.png 1429w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-24-300x68.png 300w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-24-1024x232.png 1024w, https:\/\/www.red-gate.com\/simple-talk\/wp-content\/uploads\/2025\/04\/article-content-24-768x174.png 768w\" sizes=\"auto, (max-width: 1429px) 100vw, 1429px\" \/><\/figure>\n\n\n\n<p>\n  \n<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-conclusion\">Conclusion<\/h2>\n\n\n\n<p>This is a very interesting solution for an architectural problem, but it requires teamwork between developers, architects and cloud network engineers.<\/p>\n\n\n\n<p>The information is provided to help to solve architectural problems. I&#8217;m not responsible for evil ideas some architects may have about these configurations.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Rate limit is common when consuming API&#8217;s: They control how many calls you can make in an interval of time. I faced one challenge with the rate limit recently: Out of the blue, the rate limit started to be reached. Why it was out of the blue and random I will not include here in&#8230;&hellip;<\/p>\n","protected":false},"author":50808,"featured_media":106441,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[137091,2,10],"tags":[145490,159309,159308],"coauthors":[6810],"class_list":["post-106397","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-blogs","category-cloud","tag-azure-functions","tag-nat-gateway","tag-virtual-network"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/106397","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/users\/50808"}],"replies":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/comments?post=106397"}],"version-history":[{"count":2,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/106397\/revisions"}],"predecessor-version":[{"id":106442,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/posts\/106397\/revisions\/106442"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media\/106441"}],"wp:attachment":[{"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/media?parent=106397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/categories?post=106397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/tags?post=106397"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.red-gate.com\/simple-talk\/wp-json\/wp\/v2\/coauthors?post=106397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}