最近のアクセス:
Azure Functions としてデプロイする方法

ここでは、GeneXus アプリケーションを Azure Functions にデプロイする方法について説明します。
概要

要件のインストール

デプロイを実行するマシンに、要件となるものをインストールします。要件は Azure CLI のみです。

クラウドの設定

Azure ポータルで、以下の手順に従います:
  1. Azure にリソースを作成します。「Azure Function App の作成方法」を参照してください。
  2. 認証を行うには、サービスプリンシパルを設定します。

GeneXus でのモデリング

GeneXus で、以下の手順に従います:
  1. Deployment Unit オブジェクトを作成し、デプロイするオブジェクトを選択します。
  2. [ アプリケーションをデプロイ ] を使用して、ターゲット「Microsoft Azure Functions」を選択します。
    アプリケーションのバックエンドサービスをデプロイするには、ターゲット「Microsoft Azure serverless (backend services)」を選択します。この場合、関数は HTTP をトリガーとする関数としてデプロイされます。
  3. プロパティのグリッドでプロパティを設定します。
  4. [ デプロイ ] ボタンをクリックして Azure へデプロイします。

関数のトリガータイプ

Azure の関数にはトリガータイプがあります (デプロイユニットの [ Trigger type ] プロパティ)。 
イメージ:49354.png
関数のトリガータイプに応じてデプロイ時の検討事項が異なります。
これらの検討事項については、HTTP 以外のトリガーを持つ関数と、HTTP トリガーを持つ関数を分けて考えることができます。

HTTP をトリガーとしない関数

HTTP トリガーを持つ関数を除くすべての関数については、アプリケーションのデプロイ時に以下の点を検討します。
これはタイマーでトリガーされる関数の例です:
イメージ:47446.png

HTTP をトリガーとする関数

HTTP トリガーの Azure Functions」を参照してください。

関数の実行 (HTTP を除くすべて)

このソリューションは、次の形式の環境変数を使用して、Azure Functions を表す GeneXus オブジェクトを内部的に呼び出すように構成されています:
GX_AZURE_<FUNCTION_NAME>_CLASS。FUNCTION_NAME は関数の名前です。
この環境変数は、関数と、それに関連付けられた GeneXus オブジェクト間のマッピングを認識するために使用されます。

値には常に、ナレッジベースの名前空間またはパッケージ名と、それに続くモジュール化された GeneXus オブジェクトの名前が含まれます。
GeneXus オブジェクトには「a」という接頭語が付くことに注意してください。

例:
イメージ:59531.png
環境変数が定義されていない場合は、同じ情報を含む gxazmappings.json というファイルが検索されます。
ファイルの例:
 [ 
    {
        "FunctionName": "QueueTriggerJava",
        "GXEntrypoint": "com.testazurefunctionsjava.test.testqueue"
    },
    {
        "FunctionName": "testfunction",
        "GXEntrypoint": "com.testazurefunctionsjava.test.queuetriggeredfunction"
    }
 ] 

.NET の場合は、環境変数に加えてこのファイルが生成されます。Java では、環境変数のみが定義されます。

実行時に環境変数もファイルも見つからない場合は、次のエラーが発生します:

FunctionConfigurationException: File gxazmappings.json not found. The file is attempted to be read when there is no GX_AZURE_<FUNCTIONNAME>_CLASS environment variable pointing to the GeneXus class associated with the function.

関数の共通事項

最初に、既存の Function App に関数を公開するとき、関数が更新されることを考慮します。

関数の設定

設定を変更する必要がある場合でも、再デプロイする必要がないという点で、デプロイの柔軟性が非常に高くなります。
関数によっては、一部の設定をクラウドで変更できるようにすることが望まれます。こうした設定はデプロイ時に設定され、指定する名前と値でアプリケーション設定をクラウドに作成するようデプロイエンジンを設定できます。
それ以外の場合、デプロイエンジンでは設定は定義されません。(関数のインフラストラクチャのセットアップの一環として) 設定を行うのはユーザーの責任となります。
 

デプロイエンジンでアプリケーション設定を作成する場合

たとえば、タイマー関数の場合、cron の時刻やアプリケーション設定 (指定する名前と値でクラウドに作成) を指定できます。
イメージ:47810.png
最後のオプションについては、すべての変更をクラウドで行うことができるメリットがあります (変更のための再デプロイは不要です)。
イメージ:49725.png
キューや Service Bus など、接続データをアプリケーション設定として定義するその他の関数タイプも同様です。

デプロイエンジンでアプリケーション設定を作成しない場合

アプリケーション設定とその値を指定するプロパティがない場合でも、アプリケーション設定を柔軟に使用できます。

たとえば、Service Bus またはキュートリガーの場合、キュー名などに固定値を設定する代わりに、「%」で囲んだアプリケーション設定名を設定し、Azure で値を定義できます (アプリケーション設定は Azure で定義する必要があります)。

これにより、固定値を残さずにデプロイできます。つまり、関数が別のキューや Service Bus などを使用するという理由で、再デプロイする必要はないということです。

イメージ:59530.png

関数のグローバル設定

Function App 内のすべての関数の動作をグローバルに設定できます。そのためには host.json ファイルを使用します。たとえば、アプリケーション、健全性モニターなどのトレースレベルをこのファイルで設定できます。
Azure Functions には既定のタイムアウトがありますが、これも host.json ファイルで変更できます。

重要: このファイルは管理する必要があります。
  • Java の場合は、<GeneXus のインストールフォルダ>\DeploymentTargets\Azure Functions\Templates\Java フォルダにコピーして、既存のファイルを置き換えることができます。
  • .NET の場合は、<GeneXus のインストールフォルダ>\ DeploymentTargets\AzureFunctions\AzFunctionFiles\src にあるファイルを置き換えることができます。
[ アプリケーションをデプロイ ] では、基本設定のファイルがアップロードされます。別の設定を使用する場合は、ファイルを編集してデプロイユニットに追加できます (「追加のファイルとディレクトリーのデプロイ」を参照)。
トレース情報を生成するための host.json ファイルの例:
{
    "version": "2.0",
    "logging": {
        "fileLoggingMode": "always",
        "logLevel": {
            "default": "Trace",
            "Host.Results": "Trace",
            "Function": "Trace",
            "Host.Aggregator": "Trace"
        },
        "applicationInsights": {
            "samplingExcludedTypes": "Request",
            "samplingSettings": {
                "isEnabled": true
            }
        }
    }
}
: [ Route Prefix ] プロパティは、このファイルで直接変更しないでください。カスタマイズするには、 [ デプロイ ] ダイアログのプロパティの [ Route Prefix ] プロパティを使用するか、Azure Functions を API Management にアップロードして、必要に応じてパスをカスタマイズします。

アーキテクチャの考慮事項

Function App が Image、Audio、Video、BlobFile のデータタイプを使用する場合は、[ Storage Provider ] プロパティを設定する必要があります。マルチメディアはすべて Microsoft Azure などの外部 URL から提供する必要があります。
同じ理由で、コンテンツ提供にファイルシステムを使用すること、つまりファイルに対する読み取り/書き込みアクセスはサポートされていません (Blob データタイプ、Excel、PDF レポートなど)。 
GAM を使用したソリューションについては、「Azure サーバーレスアーキテクチャで GAM を使用する方法」を参照してください。

バックリンク
目次: アプリケーションをデプロイ目次: アプリケーションをデプロイ (GeneXus 18 Upgrade 2 以前のバージョン)Blob Storage でトリガーされる Azure Functions
Blob Storage でトリガーされる Azure Functions (GeneXus 18 Upgrade 11)CosmosDB でトリガーされる Azure FunctionsEvent Grid でトリガーされる Azure FunctionsAzure Functions
HTTP トリガーの Azure Functionsタイマートリガーの Azure Functionsタイマートリガーの Azure Functions (GeneXus 18 Upgrade 11 以前のバージョン)[ Batch Function ] プロパティ
GeneXus 18 のクラウドネイティブAzure Functions または AWS 関数としてデプロイする GeneXus プロシージャーの作成方法Azure Functions または AWS 関数としてデプロイする GeneXus プロシージャーの作成方法 (GeneXus 18 Upgrade 2)Azure Functions としてデプロイする方法 (GeneXus 18 Upgrade 11)
Azure Functions デプロイのための MSBuild タスクの使用方法Service Bus と Queue Storage をトリガーとする Azure FunctionsService Bus と Queue Storage をトリガーとする Azure Functions (GeneXus 18 Upgrade 11 以前のバージョン)ヒント: Azure Functions をローカルで実行する
サブページ
Created: 22/03/14 00:51 by Admin Last update: 25/12/14 22:50 by Admin
カテゴリ
Powered by GXwiki 3.0