规划用于 AWS 的外部函数

借助本主题,您可以使用 Snowflake 提供的 AWS 管理控制台或 AWS CloudFormation 模板为创建用于 AWS (Amazon Web Services) 的外部函数做好准备。

本主题内容:

先决条件

这些说明假设您是经验丰富的 AWS 管理控制台用户。

您需要:

  • 具有 AWS 账户,包括具有以下权限:

    • 通过 IAM (身份和访问管理)创建 AWS 角色。

    • 创建 AWS Lambda 函数。

    • 创建 API 网关端点。

  • 一个 Snowflake 账户,该账户具有 ACCOUNTADMIN 权限,或具有已获得 CREATE INTEGRATION 权限的角色。

  • 如果您计划使用专用端点,则需要虚拟私有云 (VPC) ID。(必须使用 VPC ID,而不是 VPC 端点 ID。VPC 端点 IDs 可能会随时间而变化。)

    如果还没有 VPC ID,可以通过在 Snowflake Web 界面中执行以下命令来查找它:

    select system$get_snowflake_platform_info();
    
    Copy

    输出应类似于以下内容:

    {"snowflake-vpc-id":["vpc-12345678"]}
    
    Copy

    记录 VPC ID。在决定是使用 AWS 管理控制台还是 AWS CloudFormation 模板创建外部函数后,将 VPC ID 复制到相应的跟踪工作表:

选择端点类型:区域端点与专用端点

可以通过通常称为 端点 的 URI 访问代理服务(如 Amazon API Gateway)。创建 Amazon API Gateway 的说明要求您选择以下端点类型之一:

  • 区域端点。

  • 专用端点。

以下信息可帮助您选择端点类型。

可以跨 AWS 区域访问区域端点,甚至可以跨云平台访问。Snowflake 实例、代理服务和远程服务都可以位于不同的区域,甚至位于不同的云平台上。例如,在 Azure 上运行的 Snowflake 实例可以向 Amazon API Gateway 区域端点发送请求,而该端点又可以将数据转发到在 GCP 上运行的远程服务。

可以配置专用端点,以仅允许在区域内进行访问。例如,可以配置一个专用端点,以仅允许从同一 AWS 区域的 Snowflake VPC (虚拟私有云)进行访问。Snowflake VPC 和专用端点之间使用 AWS PrivateLink 进行通信。

有关 AWS 上的端点类型的更多详细信息,请参阅:

  • Amazon API Gateway 概念 (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-basic-concept.html)

  • Amazon API Gateway 端点类型 (https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-endpoint-types.html)

如果要使用专用端点,但不确定要使用哪个区域,可以通过执行以下任一操作来查找区域:

  • 调用 SQL 函数 ``CURRENT_REGION()``(例如 SELECT CURRENT_REGION())。

  • 检查 Snowflake 账户主机名,它通常会指示云提供商和区域。有关账户主机名、区域和云提供商的更多信息,请参阅 支持的云区域

要使用专用端点,账户必须符合以下要求:

  • Snowflake 的 Business Critical Edition(或更高版本)。

选择创建外部函数的方法

Snowflake 提供有关在 AWS 上创建外部函数的两种方法的说明:

  • AWS 管理控制台 Web 界面

  • Snowflake 提供的 AWS CloudFormation 模板

AWS 管理控制台

可以使用 AWS 管理控制台 (https://aws.amazon.com/console/) 创建 Lambda 函数(作为远程服务),以及 Amazon API Gateway 实例(作为代理服务)。如果选择此方法,则还需使用 AWS 管理控制台配置与安全相关的设置。

使用 AWS 管理控制台创建外部函数的说明包含了一个示例 Lambda 函数,以及创建基本 API Gateway 的详细信息:

  • 新用户几乎无需修改即可使用这些说明。

  • 有经验的用户可以使用这些说明和示例 Lambda 函数作为起点,以创建自定义 Lambda 函数和自定义配置的 API Gateway。

AWS CloudFormation 模板

创建外部函数时,CloudFormation 模板执行以下两个步骤:

  • 创建远程服务(AWS Lambda 函数)。

  • 创建和配置代理服务 (Amazon API Gateway)。

该模板还执行以下操作:

  • 创建两个 IAM 角色(一个用于 Lambda 函数,另一个用于 API Gateway)。

  • 为 API Gateway 配置资源策略。

准备使用 AWS 管理控制台

创建用于跟踪所需信息的工作表

创建外部函数时,应记录输入的特定信息(例如资源调用 URL),以便可以在后续步骤中使用该信息。下面的工作表可帮助您跟踪该信息。

===========================================================================
================ Tracking Worksheet: AWS Management Console ===============
===========================================================================

****** Step 1: Information about the Lambda Function (remote service) *****

Your AWS Account ID: ______________________________________________________

Lambda Function Name: _____________________________________________________


******** Step 2: Information about the API Gateway (proxy Service) ********

New IAM Role Name: ________________________________________________________

New IAM Role ARN: _________________________________________________________

Snowflake VPC ID (optional): ______________________________________________

New API Name: _____________________________________________________________

API Gateway Resource Name: ________________________________________________

Resource Invocation URL: __________________________________________________

Method Request ARN: _______________________________________________________


*** Step 3: Information about the API Integration and External Function ***

API Integration Name: _____________________________________________________

API_AWS_IAM_USER_ARN: _____________________________________________________

API_AWS_EXTERNAL_ID: ______________________________________________________

External Function Name: ___________________________________________________
Copy

准备使用 AWS CloudFormation 模板

下载模板

要下载该模板,请转到 GitHub 上的 Snowflake 存储库,然后从 部署模板目录 (https://github.com/Snowflake-Labs/sfguide-external-functions-examples/tree/main/DeploymentTemplates/aws/BasicSetup.yaml) 下载。

创建用于跟踪所需信息的工作表

创建外部函数时,应记录输入的特定信息(例如资源调用 URL),以便可以在后续步骤中使用该信息。下面的工作表可帮助您跟踪该信息。

===========================================================================
================== Tracking Worksheet: CloudFormation Template ============
===========================================================================

New IAM Role Name: ________________________________________________________

New IAM Role ARN: _________________________________________________________

Resource Invocation URL: __________________________________________________

API_AWS_IAM_USER_ARN: _____________________________________________________

API_AWS_EXTERNAL_ID: ______________________________________________________
Copy

用于构建 AWS 上的外部函数的其他资源

准备好为自己的外部函数创建自己的远程服务时,您可能需要查看 Snowflake Labs (https://github.com/Snowflake-Labs/sfguide-external-functions-examples) 提供的基于 Lambda 函数的远程服务示例。

下一步

AWS 管理控制台:

第 1 步:在管理控制台中创建远程服务(AWS Lambda 函数)

AWS CloudFormation 模板:

第 1 步:使用模板创建远程服务(AWS Lambda 函数)和代理服务 (API Gateway)

语言: 中文