Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
虚拟网络地址转换 (NAT) 简化了虚拟网络的仅出站互联网连接。 在子网中配置后,所有出站连接将使用指定的静态公共 IP 地址。 NAT 对于需要使用第三方服务(使用 IP 地址允许列表作为安全措施)的应用非常有用。 若要了解详细信息,请参阅 NAT 网关 Azure是什么
本教程介绍如何使用 NAT 网关从 HTTP 触发的函数路由出站流量。 此函数可让你检查其自身的出站 IP 地址。 在本教程中,你将:
- 创建虚拟网络
- 创建高级计划函数应用
- 创建公共 IP 地址
- 创建 NAT 网关
- 配置功能应用以通过 NAT 网关路由出站流量
注意事项
不能使用 NAT 网关将出站流量路由到函数应用所在的同一区域中Azure Storage帐户。 在与存储帐户相同区域中部署的服务使用专用的 Azure IP 地址进行通信。 有关详细信息,请参阅 NAT 网关常见问题解答。
拓扑
下图显示了你创建的解决方案的体系结构:
在高级计划中运行的函数具有与 Azure App Service 中web apps相同的托管功能,其中包括 VNet 集成功能。 若要详细了解 VNet 集成的更多信息(包括故障排除和高级配置),请参阅 将应用与 Azure 虚拟网络集成。
先决条件
若要学习本教程,必须了解 IP 寻址和子网划分。 可以从这篇介绍了寻址和子网划分基础知识的文章入手。 网上还有其他许多相关文章和视频。
如果没有Azure订阅,请在开始前创建 Trial。
如果您已完成“将 Functions 与 Azure 虚拟网络集成”教程,可以跳到“创建 HTTP 触发器函数”。
创建虚拟网络
在Azure portal菜单中,选择创建资源。 在Azure Marketplace中,选择Networking>Virtual network。
在 Create virtual network 中,输入或选择下表所示指定的设置:
设置 值 订阅 选择订阅。 资源组 选择“新建”,输入 myResourceGroup,然后选择“确定”。 名称 输入 myResourceGroup-vnet。 位置 选择“中国北部 2”。 选择“下一步: IP 地址”,输入 10.10.0.0/16 作为“IPv4 地址空间”。
选择“添加子网”,输入 Tutorial-Net 作为“子网名称”,输入 10.10.1.0/24 作为“子网地址范围” 。
选择“添加”,然后选择“查看 + 创建”。 将其余的设置保留默认值,然后选择“创建”。
在 Create virtual network 中,选择 Create。
接下来,在高级计划中创建一个函数应用。 此计划提供无服务器扩展,同时支持虚拟网络集成。
在高级计划中创建函数应用。
本教程介绍如何在高级计划中创建函数应用。 在托管应用于Flex 消耗计划或Dedicated(应用服务)计划时,也可以使用相同的功能。
注意事项
若要获得本教程的最佳体验,请选择 .NET 作为运行时堆栈,并选择 Windows 作为操作系统。 此外,请在与虚拟网络相同的区域中创建您的函数应用。
在Azure portal菜单或 Home 页中,选择创建资源。
在 “新建” 页面,选择 “计算”>“函数应用” 。
在“ 选择托管”选项下,选择 “Functions Premium>Select” 以在 高级计划中创建应用。 在此 serverless 托管选项中,只需为函数运行时付费。 若要详细了解不同的托管计划,请参阅 计划概述。
在“基本信息”页面上,按照下表中指定的函数应用设置进行操作:
设置 建议值 描述 订阅 你的订阅 要在其下创建此新函数应用的订阅。 Resource Group myResourceGroup 要在其中创建 Function App 的新资源组名称。 函数应用名称 全局唯一名称 用于标识新 Function App 的名称。 有效字符为 a-z(不区分大小写)、0-9和-。 若要保证唯一的应用名称,可以选择启用目前处于预览状态 的安全唯一默认主机名。是否要部署代码或容器映像? Code 用于发布代码文件或 Docker 容器的选项。 操作系统 首选操作系统 选择“Linux”或“Windows”。 运行时堆栈 首选语言 选择支持你喜欢的函数编程语言的运行时。 版本 支持的语言版本 选择函数编程语言支持的版本。 区域 首选区域 选择靠近您或靠近您的功能访问的其他服务的区域。 在 Environment 详细信息下,对于 Windows Plan 或 Linux Plan,选择 创建新,为你的 App Service 计划命名命名,然后选择一个定价计划。 默认定价计划为 EP1,其中 EP 代表弹性溢价。 要了解详细信息,请参阅高级 SKU 的列表。 在高级计划上运行 JavaScript 函数时,应选择 vCPU 数更少的实例。 有关详细信息,请参阅选择单核心高级计划。
除非想要启用 区域冗余,否则保留 默认值“已禁用”。
选择 Next: Storage。 在 Storage 页上,创建函数应用所需的默认主机storage帐户。 Storage帐户名长度必须介于 3 到 24 个字符之间,并且只能包含数字和小写字母。 还可以使用现有帐户,该帐户必须满足 存储帐户要求。
除非启用虚拟网络集成,否则请选择《Next(下一步):Monitoring(监控)》以跳过《Networking(网络)》选项卡。在《Monitoring(监控)》页面上,输入以下设置:
设置 建议值 描述 启用 Application Insights 是的 启用内置的 Application Insight 集成,用于监视函数代码。 Application Insights 默认 在距离最近的受支持区域中,创建一个与应用名称一致的 Application Insights 资源。 通过展开此设置,可以更改New 资源名称,或者在Azure 地理位置中选择其他位置来存储数据。 选择 Review + create 来接受其余页面的默认值,并检查应用配置的选择。
在“查看 + 创建”页上查看设置,然后选择“创建”来预配并部署函数应用 。
选择门户右上角的“通知”图标,留意是否显示了“部署成功”消息。
选择“转到资源”,查看新的函数应用。 还可选择“固定到仪表板”。 固定可以更轻松地从仪表板返回此函数应用资源。
将函数应用连接到虚拟网络
现在可以将函数应用程序连接到虚拟网络。
在函数应用中,选择左侧菜单中的“网络”,然后在“VNet 集成”下选择“单击此处进行配置” 。
在“VNET 集成”页上,选择“添加 VNet” 。
在“网络功能状态”中,使用插图下面的表格中的设置:
设置 建议值 描述 Virtual Network MyResourceGroup-vnet 此虚拟网络是您之前创建的网络。 子网 创建新子网 在virtual network中创建子网供函数应用使用。 必须将 VNet 集成配置为使用空子网。 子网名称 Function-Net 新子网的名称。 虚拟网络地址块 10.10.0.0/16 只应定义一个地址块。 子网地址块 10.10.2.0/24 子网大小限制了您的高级计划函数应用可以扩展到的实例总数。 此示例使用具有 254 个可用主机地址的 /24子网。 此子网进行了超量预配,但易于计算。选择“确定”以添加子网。 关闭“VNet 集成”和“网络功能状态”页,返回到函数应用页 。
函数应用现在可以访问虚拟网络。 启用连接后,vnetrouteallenabled 站点设置设定为 1。 必须将此站点设置或旧版 WEBSITE_VNET_ROUTE_ALL 应用程序设置设定为 1。
接下来,将 HTTP 触发的函数添加到函数应用中。
创建 HTTP 触发器函数
从“Functions”窗口的左侧菜单中选择“Functions”,然后从顶部菜单中选择“添加”。
在“新建函数”窗口中,选择“Http 触发器”并接受新函数的默认名称,或输入新名称 。
在“代码 + 测试”中,将模板生成的 C# 脚本 (.csx) 代码替换为以下代码:
#r "Newtonsoft.Json" using System.Net; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Primitives; using Newtonsoft.Json; public static async Task<IActionResult> Run(HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); var client = new HttpClient(); var response = await client.GetAsync(@"https://ifconfig.me"); var responseMessage = await response.Content.ReadAsStringAsync(); return new OkObjectResult(responseMessage); }此代码将调用一个外部网站,该网站返回调用方的 IP 地址,在本例中为此函数。 此方法可让你轻松确定函数应用使用的出站 IP 地址。
现已准备好运行函数并检查当前的出站 IP。
验证当前出站 IP
现在可以运行该函数。 但首先请在门户中查看函数应用正在使用哪些出站 IP。
在函数应用中,选择“属性”并查看“出站 IP 地址”字段 。
现在,返回到你的 HTTP 触发器函数,选择“代码 + 测试”,然后选择“测试/运行” 。
选择“运行”来执行该函数,然后切换到“输出”,验证 HTTP 响应正文中的 IP 地址是否为之前查看的出站 IP 地址中的值之一。
现在,可以创建一个公共 IP,并使用 NAT 网关来修改此出站 IP 地址。
创建公共 IP
在资源组中选择“Add”,在 Azure Marketplace 搜索“公共 IP 地址”,然后选择Create。 使用插图下面的表格中的设置:
设置 建议值 IP 版本 IPv4 SKU 标准 层 区域 名称 出站 IP 订阅 确保已显示你的订阅 资源组 myResourceGroup(或你为资源组分配的名称) 位置 中国北区 2(或您分配给其他资源的位置) 可用性区域 无区域 选择“创建”以提交部署。
部署完成后,导航到新建的“公共 IP 地址”资源,并查看“概述”中的 IP 地址。
创建 NAT 网关
现在,让我们创建 NAT 网关。 从 先前的虚拟网络教程 开始时,Function-Net 是建议的子网名称,MyResourceGroup-vnet 是先前的教程中建议的虚拟网络名称。
在您的资源组中,选择添加,在 Azure Marketplace 中搜索NAT 网关,然后选择创建。 使用插图下面的表格中的设置来填充“基本信息”选项卡:
设置 建议值 订阅 你的订阅 资源组 myResourceGroup(或你为资源组分配的名称) NAT 网关名称 myNatGateway 区域 中国北区 2(或您分配给其他资源的位置) 可用性区域 无 选择“下一步: 出站 IP”。 在“公共 IP 地址”字段中,选择前面创建的公共 IP 地址。 将“公共 IP 前缀”保持未选中状态。
选择“下一步: 子网”。 在 Virtual network 字段中选择 myResourceGroup-vnet 资源,然后选择 Function-Net 子网。
依次选择“查看 + 创建”和“创建”来提交部署 。
部署完成后,NAT 网关便可以将流量从你的函数应用子网路由到 Internet。
验证新的出站 IP 地址
重复上述步骤再次运行该函数。 现在,在函数输出中应会看到你在 NAT 中配置的出站 IP 地址。
清理资源
你已创建了完成本教程所需的资源。 根据你的 account 状态和 服务定价,你将为这些资源付费。 为了避免产生额外的成本,请在不再需要这些资源时将其删除。
在Azure portal中,转到 Resource 组页。
若要从函数应用页转到该页,请选择“概览”选项卡,然后选择“资源组”下的链接。
若要从仪表板转到该页,请选择“资源组”,然后选择用于本文的资源组。
在“资源组”页中查看所包括的资源的列表,然后验证这些资源是否是要删除的。
选择“删除资源组”,然后按说明操作。
删除操作可能需要几分钟。 完成后会显示一个通知,持续数秒。 也可以选择页面顶部的钟形图标来查看通知。