AWS 用の外部関数の計画¶
このトピックは、 AWS ManagementコンソールまたはSnowflakeが提供する AWS CloudFormation テンプレートを使用して、 AWS (Amazon Web Services)の外部関数を作成する準備に役立ちます。
このトピックの内容:
前提条件¶
これらの手順は、経験豊富な AWS Managementコンソールユーザーであることを前提としています。
次が必要です。
- 次の権限を含む、 AWS のアカウント。 - IAM を介した AWS ロールの作成(IDおよびアクセス管理)。 
- AWS Lambda関数の作成。 
- API Gatewayエンドポイントの作成。 
 
- ACCOUNTADMIN 権限または CREATE INTEGRATION 権限があるロールを持っているSnowflakeアカウント。 
- プライベートエンドポイントを使用する場合は、仮想プライベートクラウド(VPC) ID が必要です。(VPC エンドポイント ID ではなく、 VPC ID を使用する必要があります。VPC エンドポイント IDs は時間の経過とともに変化する可能性があります。) - VPC ID をまだお持ちでない場合は、Snowflakeのウェブインターフェイスで以下のコマンドを実行することで見つけることができます。 - select system$get_snowflake_platform_info(); - 出力は以下のようになります。 - { "snowflake-vpc-id": ["vpc-12345678"], "snowflake-egress-vpc-ids": [ ... { "id": "vpc-12345678", "expires": "2025-03-01T00:00:00", "purpose": "generic" }, ... ] } - 関数の出力から、"purpose": "generic"で識別された各プロパティについて、対応する VPC ID(s)を記録します。 - AWS Managementコンソールまたは AWS CloudFormation テンプレートを使用して外部関数を作成するかどうかを決定したら、 VPC IDs を適切な追跡ワークシートにコピーします。 
エンドポイントの選択: リージョンエンドポイントとプライベートエンドポイント¶
URI を介してプロキシサービス(Amazon API Gatewayなど)にアクセスします。これは エンドポイント と呼ばれることがあります。Amazon API Gatewayを作成する手順では、次に挙げるタイプのエンドポイントのいずれかを選択するように求められます。
- リージョンエンドポイント。 
- プライベートエンドポイント。 
次の情報は、エンドポイントのタイプを選択するのに役立ちます。
リージョンエンドポイントは、 AWS リージョン間またはクラウドプラットフォーム間でもアクセスできます。Snowflakeインスタンス、プロキシサービス、およびリモートサービスのすべてが、異なるリージョン、あるいは異なるクラウドプラットフォームでも利用できます。たとえば、Azureで実行されているSnowflakeインスタンスは、Amazon API Gatewayのリージョンエンドポイントにリクエストを送信できます。これにより、 GCP で実行されているリモートサービスにデータが転送されます。
プライベートエンドポイントは、リージョン内でのみアクセスを許可するように構成できます。たとえば、プライベートエンドポイントは、同じ AWS リージョン内のSnowflake VPC (仮想プライベートクラウド)からのみアクセスを許可するように構成できます。Snowflake VPC とプライベートエンドポイント間の通信は AWS PrivateLink を使用します。
AWS にあるエンドポイントの種類の詳細については、次をご参照ください。
プライベートエンドポイントを使用する必要があり、使用しているリージョンがわからない場合は、次のいずれかを実行してリージョンを検索できます。
- SQL 関数 - CURRENT_REGION()を呼び出します(例:- SELECT CURRENT_REGION())。
- Snowflakeアカウントのホスト名を確認します。これは通常、クラウドプロバイダーと地域を表します。アカウントのホスト名、地域、およびクラウドプロバイダーの詳細については、 サポートされているクラウドリージョン をご参照ください。 
プライベートエンドポイントを使用するには、アカウントが次の要件を満たしている必要があります。
- SnowflakeのBusiness Critical(またはそれ以上の)エディション。 
外部関数の作成方法の選択¶
Snowflakeでは、 AWS で外部関数を作成する2つの方法の手順を提供しています。
- AWS Managementコンソールのウェブインターフェイス 
- Snowflakeが提供する AWS CloudFormation テンプレート 
AWS Managementコンソール¶
AWS Managementコンソール を使用して、Lambda関数(リモートサービスとして)とAmazon API Gatewayインスタンス(プロキシサービスとして)を作成できます。この方法を選択した場合は、 AWS Managementコンソールを使用してセキュリティ関連の設定を構成することもできます。
AWS Managementコンソールを使用して外部関数を作成する手順には、サンプルのLambda関数と、基本的な API Gatewayを作成するための詳細が含まれています。
- 初めてのユーザーは、ほとんどまたはまったく変更を加えることなく、手順を使用できます。 
- 経験豊富なユーザーは、カスタムのLambda関数とカスタム構成の API Gatewayを作成するための開始点として、手順とサンプルLambda関数を使用できます。 
AWS CloudFormation テンプレート¶
CloudFormation テンプレートは、外部関数を作成する際に次の両方のステップを実行します。
- リモートサービス(AWS Lambda関数)の作成。 
- プロキシサービス(Amazon API Gateway)の作成および構成。 
テンプレートは次も実行します。
- 2つの IAM ロールを作成する(1つはLambda関数用、もう1つは API Gateway用)。 
- API Gatewayのリソースポリシーの構成。 
AWS Managementコンソールを使用するための準備¶
必要な情報を追跡するためのワークシートを作成する¶
外部関数を作成するときは、入力した特定の情報(例: リソース呼び出し 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: ___________________________________________________
AWS CloudFormation テンプレートを使用するための準備¶
テンプレートをダウンロードする¶
テンプレートは、 GitHub にあるSnowflakeリポジトリの 展開テンプレートディレクトリ からダウンロードできます。
必要な情報を追跡するためのワークシートを作成する¶
外部関数を作成するときは、入力した特定の情報(例: リソース呼び出し 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: ______________________________________________________
AWS で外部関数を構築するための追加リソース¶
独自の外部関数用に独自のリモートサービスを作成する準備ができたら、 Snowflakeラボ で提供されているLambda関数に基づくリモートサービスの例を参照することをお勧めします。
次のステップ¶
- AWS Managementコンソール:
- AWS CloudFormation テンプレート:
- ステップ1: テンプレートを使用してリモートサービス(AWS Lambda関数)とプロキシサービス(API Gateway)を作成する