Azureの外部関数の計画

これらのトピックは、Azure PortalまたはSnowflakeが提供するARM(Azure Resource Manager)テンプレートを使用して、Microsoft Azureの外部関数を作成するための準備に役立ちます。

このトピックの内容:

前提条件

このドキュメントは、経験豊富なAzure Portalユーザー向けの内容になっています。

Azureの外部関数を作成するには、次のものが必要です。

  • Azure AD (Active Directory)テナント。

  • そのAzure AD テナントのアカウント。アカウントには、次の権限が必要です。

    • Azure Functionアプリの作成。

    • Azure API Managementサービスを使用してサービスエンドポイントを作成。

    • Azure ADアプリケーションの登録。

  • ACCOUNTADMIN権限またはCREATE INTEGRATION権限があるロールを持っているSnowflakeアカウント。

さらに、Azure AD Tenant IDが既に存在している必要があります。

Azure AD Tenant IDは UUID であり、通常は 12345678-abcd-1234-efab-123456789012 のようにフォーマットされます。ここでのダッシュ以外の各文字は16進数です。

Azure AD Tenant ID をまだ知らない場合は、次の手順で見つけることができます。

  1. Azure Portalにログインします(http://portal.azure.com)。

  2. ページ上部付近にある Azure services アイコンで、 Azure Active Directory をクリックします。

  3. 左側のメニューで、 Manage というタイトルのセクションを探し、その下の Properties をクリックします。

Azure AD Tenant ID が、 Tenant ID フィールドに表示されます。

外部関数の作成方法の選択

Snowflakeでは、Azureで外部関数を作成する2つの方法の手順を提供しています。

  • Azure Portalのウェブインターフェイス

  • Snowflakeが提供するARM(Azure Resource Manager)テンプレート

Azure Portal

Azure Portal を使用して、Azure Function(リモートサービスとして)とAPI Managementサービスインスタンス(プロキシサービスとして)を作成できます。この方法を選択した場合は、Azure Portalを使用してセキュリティ関連の設定も構成します。

Azure Portalを使用して外部関数を作成する手順には、サンプルのAzure Functionと、基本的なAPI管理サービスインスタンスを作成するための詳細が含まれています。

  • 初めてのユーザーは、ほとんどまたはまったく変更を加えることなく、Azure Functionの手順とサンプルを使用できます。

  • 経験豊富なユーザーは、カスタムのAzure Functionとカスタム構成のAPI管理サービスインスタンスを作成するための開始点として、Azure Functionの手順とサンプルを使用できます。

ARM(Azure Resource Manager)テンプレート

ARMテンプレート は、 JSON を使用して、Azure Function(リモートサービスとして)およびAzure API Managementサービスインスタンス(プロキシサービスとして)に関する構成情報を記述します。

Snowflakeは、以下を含むサンプルARMテンプレートを提供します。

  • Azure Functionのサンプル

  • API Managementサービスのサンプルの構成情報のほとんど。API Managementサービスのサンプルをカスタマイズする場合は、いくつかの追加情報を入力する必要があります。

  • Azure Functionサービスに必要なストレージアカウントを作成するコード。

  • Code to add a validate-JWT (JSON Web Token) Policy to the API Management instance in order to increase security of the Azure API Management service. However, you must manually update the validate-JWT policy before using it.

ARMテンプレートは、初めてのユーザーと経験豊富なユーザーの両方に役立ちます。

  • 初めてのユーザーは、Azure FunctionとAPI Managementサービスインスタンスの作成に必要な手順の数が減るため、Snowflakeサンプルテンプレートから始めることをお勧めします。

    これらのテンプレートをベースにした手順は、最初の外部関数をすばやく作成するのに役立ちますが、カスタマイズされた外部関数を作成するときにほとんどのユーザーが必要とするステップをスキップします。

  • テンプレートを使用して展開を自動化できるため、経験豊富なユーザーはARMテンプレートを使用することをお勧めします。これは、Azure FunctionとAPI Managementサービスを繰り返し開発している場合に役立ちます。

ARMテンプレートを使用したAzure Functionの構成の詳細については、Microsoftのドキュメントの リソースの展開 を参照してください。

Azure Portalを使用するための準備

これらのセクションは、Microsoft Azureで外部関数を作成するためにAzure Portalを使用する準備に役立ちます。

Azure Functionの料金プランを選択してください

Microsoft Azureでは、Azure Function(リモートサービス)をLinuxホストまたはWindowsホストで実行できます。現時点では、AzureはLinuxおよびWindowsホスト向けに価格設定と認証オプションのさまざまな組み合わせを提供しています。

Linux でAzure Functionを実行する場合は、Azureの料金プランと認証の有効な組み合わせを選択する必要があります。

必要な情報を追跡するためのワークシートを作成する

Azure Portalで外部関数を作成するタスクを完了すると、プロセスの各ステップで特定の値(API Managementサービス名など)を入力する必要があります。多くの場合、入力した値は後続のステップで必要になります。

この情報の記録/追跡を容易にするために、必要な各値のフィールドを含むワークシートを提供しています。

================================================================================
======================= TRACKING WORKSHEET: AZURE PORTAL =======================
================================================================================

****** Step 1: Azure Function (Remote Service) Info ****************************

Azure Function app name: _______________________________________________________
HTTP-Triggered Function name: __________________________________________________
Azure Function AD app registration name: _______________________________________
Azure Function App AD Application ID: __________________________________________

    (The value for the Azure Function App AD Application ID above is the
    "Application (client) ID" of the Azure AD app registration for the
    Azure Function. The value is used to fill in the "azure_ad_application_id"
    field in the CREATE API INTEGRATION command. This value is in the form of
    a `UUID <https://en.wikipedia.org/wiki/Universally_unique_identifier>`_ , which contains hexadecimal digits and dashes.)


****** Step 2: Azure API Management Service (Proxy Service) Info ***************

API Management service name: ___________________________________________________
API Management API URL suffix: _________________________________________________


****** Steps 3-5: API Integration & External Function Info *********************

API Integration Name: __________________________________________________________
AZURE_MULTI_TENANT_APP_NAME: ___________________________________________________
AZURE_CONSENT_URL: _____________________________________________________________

External Function Name: ________________________________________________________

ARMテンプレートを使用するための準備

これらのセクションは、Snowflakeが提供するARMテンプレートを使用してMicrosoft Azureで外部関数を作成する準備をするのに役立ちます。

テンプレートをダウンロードする

テンプレートは、 GitHubのSnowflakeリポジトリ からダウンロードできます。

テンプレートを使用する前に、テンプレートをAzure Portalにインポートする必要があります。テンプレートのインポートの詳細は、テンプレートの使用について説明するトピックの後半に含まれています。

Azure Functionの料金プランを選択してください

Microsoft Azureでは、Azure Function(リモートサービス)をLinuxホストまたはWindowsホストで実行できます。現時点では、AzureはLinuxおよびWindowsホスト向けに価格設定と認証オプションのさまざまな組み合わせを提供しています。

Snowflakeが提供するARMテンプレートは、デフォルトで次の価格設定と認証情報を使用します。

  • デフォルトでは、Azure FunctionにWindowsホストを使用します。

  • デフォルトは「従量課金」の価格レベルです。

  • Azure Functionアプリを作成し、AD(Active Directory)認証を要求するようにそのアプリを構成します。

  • Azure Functionを呼び出すためにSnowflakeを認証するJWT(JSONウェブトークン)を検証するためのセキュリティポリシーを作成します。

    このセキュリティポリシーには1つのフィールドがないことに注意してください。後で提供される手順は、このフィールドに入力する方法を説明しています。

Azure API ManagementインスタンスまたはAzure Functionを別の構成で実行する場合は、テンプレートを更新する必要があります。テンプレートの更新については、Microsoftのドキュメントを参照してください。

必要な情報を追跡するためのワークシートを作成する

Snowflakeが提供するARMテンプレートを使用して外部関数を作成するタスクを完了すると、プロセスの各ステップで特定の値(API Managementサービス名など)を入力する必要があります。多くの場合、入力した値は後続のステップで必要になります。

この情報の記録/追跡を容易にするために、必要な各値のフィールドを含むワークシートを提供しています。

注釈

ARMテンプレートにハードコードされている情報については、値はすでに入力されています。

================================================================================
======================= TRACKING WORKSHEET: ARM TEMPLATE =======================
================================================================================

****** Step 1: Azure Function (Remote Service) Info ****************************

HTTP-Triggered Function name: __________________ echo __________________________
Azure Function AD Application ID: ______________________________________________

    (The value for the Azure Function AD Application ID above is the
    "Application (client) ID" of the Azure AD app registration for the
    Azure Function. The value is used to fill in the "azure_ad_application_id"
    field in the CREATE API INTEGRATION command.  This field is in the form of a
    `UUID <https://en.wikipedia.org/wiki/Universally_unique_identifier>`_ , which contains hexadecimal digits and dashes.)


****** Step 2: Azure API Management Service (Proxy Service) Info ***************

API Management service name: ___________________________________________________
API Management URL: ____________________________________________________________
Azure Function HTTP Trigger URL: _______________________________________________
API Management API URL suffix: _________________________________________________


****** Steps 3-5: API Integration & External Function Info *********************

API Integration Name: __________________________________________________________
AZURE_MULTI_TENANT_APP_NAME: ___________________________________________________
AZURE_CONSENT_URL: _____________________________________________________________

External Function Name: ________________________________________________________