Azureの外部関数の計画¶
これらのトピックは、Azure PortalまたはSnowflakeが提供するARM(Azure Resource Manager)テンプレートを使用して、Microsoft Azureの外部関数を作成するための準備に役立ちます。
このトピックの内容:
前提条件¶
このドキュメントは、経験豊富なAzure Portalユーザー向けの内容になっています。
Azureの外部関数を作成するには、次のものが必要です。
Azure AD (Active Directory)テナント。
そのAzure AD テナントのアカウント。アカウントには、次の権限が必要です。
Azure Functionsアプリの作成。
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 をまだ知らない場合は、次の手順で見つけることができます。
Azure Portalにログインします(http://portal.azure.com)。
ページ上部付近にある Azure services アイコンで、 Azure Active Directory をクリックします。
左側のメニューで、 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 Managementサービスインスタンスを作成するための詳細が含まれています。
初めてのユーザーは、ほとんどまたはまったく変更を加えることなく、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 Functionsサービスに必要なストレージアカウントを作成するコード。
Azure API Managementサービスのセキュリティを強化するために、 API ManagementインスタンスにValidate JWT (JSON ウェブトークン)ポリシーを追加するコード。ただし、使用する前にValidate JWT ポリシーを手動で更新する必要があります。
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の Azure Functions 画面の Authentication/Authorization タブからAzure AD(Active Directory)アプリケーションを作成します。
Azure Functionsサービスでの認証にはAzure AD を使用します。
追加の詳細とリンクは、後半の リモートサービスを作成するための手順 に記載されています。
従量課金プランを使用する場合は、次のようにします。
Azure Portalで、Azure ADアプリケーションを手動で作成します。追加の詳細は、後半の リモートサービスを作成するための手順 に記載されています。
API ManagementインスタンスのValidfate JWT ポリシーを設定します。詳細については、 ステップ6: ポータルでプロキシサービスのAzureセキュリティポリシーを作成する をご参照ください。
IPアドレス制限を使用して、リモートサービスがAPI Managementサービスインスタンスからの接続のみを受け入れるように制限します。詳細については、 Azure Functionsの呼び出しを受け入れる IP アドレスを制限する(オプション) をご参照ください。
必要な情報を追跡するためのワークシートを作成する¶
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 (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 Functionsアプリを作成し、 AD (Active Directory)認証をリクエストするようにそのアプリを構成します。
Azure Functionを呼び出すためにSnowflakeを認証するJWT(JSONウェブトークン)を検証するためのセキュリティポリシーを作成します。
このセキュリティポリシーには1つのフィールドがないことに注意してください。後で提供される手順は、このフィールドに入力する方法を説明しています。
Azure API ManagementインスタンスまたはAzure Functionを別の構成で実行する場合は、テンプレートを更新する必要があります。テンプレートの更新については、Microsoftのドキュメントを参照してください。
リソースデプロイメントの自動化 (Azure Functionの関数アプリ向け)
必要な情報を追跡するためのワークシートを作成する¶
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 value is in the form of a
UUID (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: ________________________________________________________
次のステップ¶
- Azure Portal:
- ARMテンプレート: