为 Azure 规划外部函数¶
本主题帮助您准备使用 Azure 门户或 Snowflake 提供的 ARM (Azure 资源管理器)模板为 Microsoft Azure 创建外部函数。
先决条件¶
这些说明假设您是经验丰富的 Azure 门户用户。
要为 Azure 创建外部函数,必须具备以下条件:
一个 Azure AD (Active Directory) 租户。
该 Azure AD 租户中的一个账户。该账户必须具有以下权限:
创建 Azure 函数应用程序。
使用 Azure API 管理服务创建服务端点。
注册 Azure AD 应用程序。
一个 Snowflake 账户,您在其中拥有 ACCOUNTADMIN 角色或拥有 CREATE INTEGRATION 权限的角色
此外,您应该已经有一个 Azure AD 租户 ID。
Azure AD 租户 ID 是 UUID (link removed),其格式通常看起来类似于 12345678-abcd-1234-efab-123456789012,其中每个非短划线字符都是十六进制数字。
如果您不知道自己的 Azure AD 租户 ID,可以通过以下步骤找到它:
登录 Azure 门户 (http://portal.azure.com (http://portal.azure.com))。
在页面顶部附近的 Azure services 图标中,点击 Azure Active Directory。
在左侧的菜单中,查找标题为的 Manage 的部分,然后点击其下方的 Properties。
Azure AD 租户 ID 就显示在 Tenant ID 字段中。
公共互联网或专用连接¶
当您调用外部函数时,Snowflake 与外部服务之间的连接可以通过公共互联网,也可以使用 `Azure 专用链接 <https://learn.microsoft.com/en-us/azure/private-link/private-link-overview (https://learn.microsoft.com/en-us/azure/private-link/private-link-overview)>`_(Microsoft 文档)。是否选择使用 Azure 专用链接取决于您的安全要求,即您需要如何连接到外部服务。使用 Azure 专用链接可以帮助您满足安全要求。
如果您选择使用公共互联网,请完成本主题内容的剩余部分,然后按照编号主题使用 Azure 门户或 ARM 模板在 Azure 上创建外部函数。
如果您选择使用 Azure 专用链接,配置过程需要使用 ACCOUNTADMIN 角色和 Snowflake 账户,该账户为 Business Critical Edition(或更高版本)。使用 Azure 专用链接需支付额外费用。完成本主题内容的剩余部分并复习这些主题以了解更多信息:
选择创建外部函数的方法¶
Snowflake 提供有关在 Azure 上创建外部函数的两种方法的说明:
Azure 门户网站界面
Snowflake 提供的 ARM (Azure 资源管理器)模板
Azure 门户¶
可以使用 Azure 门户 (https://azure.microsoft.com/en-us/features/azure-portal/) 创建 Azure 函数(作为远程服务)和 API 管理服务实例(作为代理服务)。如果选择此方法,还可使用 Azure 门户配置与安全性相关的设置。
使用 Azure 门户创建外部函数的说明包括示例 Azure 函数和创建基本 API 管理服务实例的详细信息:
新用户几乎无需修改即可使用说明和示例 Azure 函数。
有经验的用户可以使用说明和示例 Azure 函数作为创建自定义 Azure 函数和自定义配置 API 管理服务实例的起点。
ARM(Azure 资源管理器)模板¶
ARM 模板 (https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/overview) 使用 JSON (https://www.json.org/) 来描述有关 Azure 函数(作为远程服务)和 Azure API 管理服务实例(作为代理服务)的配置信息。
Snowflake 提供的 ARM 示例模板包括以下内容:
示例 Azure 函数。
示例 API 管理服务的大部分配置信息。如果要自定义示例 API 管理服务,则必须输入一些其他信息。
用于创建 Azure 函数服务所需的存储账户的代码。
用于将验证 JWT (JSON Web 令牌)策略添加到 API 管理实例以提高 Azure API 管理服务安全性的代码。但是,在使用验证 JWT 策略之前,必须手动更新该策略。
ARM 模板对新用户和有经验的用户都很有用:
新用户可能需要从 Snowflake 示例模板开始,因为它减少了创建 Azure 函数和 API 管理服务实例所需的步骤。
请注意,尽管基于模板的指令可以有助于快速创建第一个外部函数,但它们会跳过大多数用户在创建自定义外部函数时所需的步骤。
有经验的用户可能想要使用 ARM 模板,因为模板可用于自动部署。如果您在迭代开发 Azure 函数和 API 管理服务,这可能会很有用。
有关使用 ARM 模板配置 Azure 函数的更多信息,请参阅 Microsoft 文档:资源部署 (https://docs.microsoft.com/en-us/azure/azure-functions/functions-infrastructure-as-code)。
准备使用 Azure 门户¶
这些部分可帮助您准备使 用Azure 门户在 Microsoft Azure 上创建外部函数。
为 Azure 函数选择定价计划¶
在 Microsoft Azure 中,Azure 函数(远程服务)可以在 Linux 主机或 Windows 主机上运行。目前,Azure 为 Linux 和 Windows 主机提供不同的定价和身份验证选项组合。
如果您计划在 Linux 上运行 Azure 函数,则必须选择 Azure 定价计划和身份验证的有效组合:
如果您使用高级版或应用服务定价计划,请执行下操作:
从 Azure 门户中 Azure Functions 屏幕上 Authentication/Authorization 选项卡创建 Azure AD (Active Directory) 应用程序。
使用 Azure AD 通过 Azure 函数服务进行身份验证。
稍后在 创建远程服务的说明 中提供了其他详细信息和链接。
如果您使用消费定价计划:
在 Azure 门户中手动创建 Azure AD 应用程序。稍后在 创建远程服务的说明 中提供了其他详细信息。
为 API 管理实例设置验证 JWT 策略。有关详细信息,请参阅 第 6 步:在门户中创建代理服务的 Azure 安全策略。
使用 IP 地址限制将远程服务限制为仅接受来自 API 管理服务实例的连接。有关详细信息,请参阅 限制接受 Azure 函数调用的 IP 地址(可选)。
创建用于跟踪所需信息的工作表¶
在您完成在 Azure 门户中创建外部函数的任务时,需要在创建过程的每个步骤中输入特定的值(如 API 管理服务名称)。通常情况下,后续步骤中需要您输入的值。
为了便于记录/跟踪这些信息,我们提供了一份工作表,其中对每个必填值都设置了字段:
准备使用 ARM 模板¶
这些部分可以帮助您准备好使用 Snowflake 提供的 ARM 模板在 Microsoft Azure 上创建外部函数。
下载模板¶
该模板可从 GitHub 中的 Snowflake 存储库 (https://github.com/Snowflake-Labs/sfguide-external-functions-examples/tree/main/DeploymentTemplates/azure/BasicSetup.json) 中下载。
必须先将该模板导入 Azure 门户,然后才能使用它。有关导入模板的详细信息将在描述使用模板的后续主题中说明。
为 Azure 函数选择定价计划¶
在 Microsoft Azure 中,Azure 函数(远程服务)可以在 Linux 主机或 Windows 主机上运行。目前,Azure 为 Linux 和 Windows 主机提供不同的定价和身份验证选项组合。
Snowflake 提供的 ARM 模板默认使用以下定价计划和身份验证信息:
默认为 Azure 函数使用 Windows 主机。
默认为“消费”定价等级。
创建 Azure 函数应用程序,并将该应用程序配置为需要 AD (Active Directory) 身份验证。
创建安全策略以验证授权 Snowflake 调用您的 Azure 函数的 JWT (JSON 网络令牌)。
请注意,此安全策略缺少一个字段,稍后提供的说明将告诉您如何填写此字段。
如果您计划使用不同的配置运行 Azure API 管理实例或 Azure 函数,则必须更新模板。有关更新模板的信息,请参阅 Microsoft 文档:
自动资源部署 (https://docs.microsoft.com/en-us/azure/azure-functions/functions-infrastructure-as-code) (适用于 Azure 函数中的函数应用程序)
创建用于跟踪所需信息的工作表¶
在您使用 Snowflake 提供的 ARM 模板完成创建外部函数任务的过程中,需要在该过程的每个步骤中输入特定的值(例如 API 管理服务名称)。通常情况下,后续步骤中需要您输入的值。
为了便于记录/跟踪这些信息,我们提供了一份工作表,其中对每个必填值都设置了字段:
备注
对于 ARM 模板中硬编码的信息,这些值已经填写完毕。
后续步骤¶
- Azure 门户:
- ARM 模板: