サービス (REST サービス、API オブジェクト、またはモバイル/Android アプリのサービス) を
Azure サーバーレスにデプロイする際に、アプリケーションが
GeneXus Access Manager (GAM) を使用する場合は、次のことに留意する必要があります。
サーバーレスは既定でステートレスです。
しかし、GAM は Web セッションを使用するため、このシナリオでは
Azure Cache for Redis を使用する必要があります。
まず、クラウドで
Azure Cache for Redis サービスを定義します。後で必要になるため、
アクセスキーを取得します。
デプロイ段階で (GeneXus IDE の [
アプリケーションをデプロイ ] を使用して、または
MSBuild タスクを使用して) 必要な情報を設定し、Redis インスタンスおよびその資格情報を指定します。
次のデプロイダイアログの画像は、セッション状態設定セクションでのプロパティの設定を示しています。
MSBuild を直接使用する場合、プロパティは次のようになります:
"AZURE_FUNCTIONS_SESSION_STATE_PROVIDER" - Redis
"AZURE_FUNCTIONS_SESSION_PROVIDER_ADDRESS"
"AZURE_FUNCTIONS_SESSION_PROVIDER_PASSWORD"
"AZURE_FUNCTIONS_SESSION_PROVIDER_INSTANCE_NAME"
"AZURE_FUNCTIONS_SESSION_TIMEOUT"
たとえば、Azure Cache for Redis の場合の設定は次のようになります:
"AZURE_FUNCTIONS_SESSION_STATE_PROVIDER" = Redis
"AZURE_FUNCTIONS_SESSION_PROVIDER_ADDRESS" = sample.redis.cache.windows.net:6380,password=xxxxxxxxxxxxxxxxxxx=,ssl=True,abortConnect=False
"AZURE_FUNCTIONS_SESSION_PROVIDER_INSTANCE_NAME" = sample
"AZURE_FUNCTIONS_SESSION_TIMEOUT" = 5
この場合、プロバイダーの [ Address ] プロパティに Redis キャッシュの [ Primary Connection string ] を設定できます。また、この図ではインスタンス名が gxredis になっています。
セッションはリクエストごとに更新されます。つまり、リクエストのたびにタイムカウンターがゼロにリセットされ、再度開始されます。これが Web 上で発生し、X 分後に非アクティブになった場合にのみセッションが期限切れになります。
GAM に接続するには、サービスに有効な
GAM リポジトリ接続が必要です。
サーバーレス クラウド アーキテクチャでは、
GX_GAMCONNECTIONKEY という Azure アプリケーション設定 (環境変数) を使用して GAM 接続キーが取得されます。
このアプリケーション設定は、デプロイダイアログの [ GAM connection key ] プロパティを介してデプロイエンジンによって自動的に定義されますが、必要に応じてクラウド上で自分で定義することも可能です。
これは、Azure ポータルの Azure Function の設定で確認できます。
[ GAM connection key ] プロパティは、 [ アプリケーションをデプロイ ] の GAM の設定セクションで指定できます:
接続キーは、次の MSBuild プロパティを使用して設定できます:
AZURE_SERVERLESS_GAM_CONNECTION_KEY
GAM 接続キーは connection.gam から取得できます。
注: 当面の間は、デプロイメントをパッケージ化するだけで Azure にはアップロードしない場合でも、GAM を使用する場合はデプロイメント時に必ず [ GAM connection key ] プロパティを設定する必要があります。つまり、クラウド上で自分で GX_GAMCONNECTIONKEY アプリケーション設定を定義する場合でも、アプリケーションを GAM に接続するには [ GAM connection key ] プロパティに値を設定する必要があります。