この機能を使用して、実行時に、
[ Storage Provider ] プロパティで設定されたストレージプロバイダーを変更したり、その設定を変更したりできます。また、cloudservices.config で設定されている、ほかのストレージプロバイダーに接続することもできます。
GeneXus コアモジュールの一部である GeneXus.Common.Configuration.ExternalStorage という名前の外部オブジェクトは、この機能に必要なすべてのメソッドを公開します。
環境内で設定されている
[ Storage Provider ] プロパティの設定に従って、プログラムで使用中のストレージプロバイダーのインスタンスを返します。
戻り値 |
Boolean |
パラメーター |
ProviderType:StorageProviderType,
Properties:Properties データタイプ、
OutStorageProvider:StorageProvider,
OutMessages:Messages |
警告: 一時的な制限: &Properties の入力には、プロバイダーの認証の資格情報を含める必要があります。
Connect メソッド
ProfileName が cloudservices.config で定義されている場合、対応するストレージプロバイダーのインスタンスを返します。
戻り値 |
Boolean |
パラメーター |
ProfileName:Character,
Properties:Properties データタイプ、
OutStorageProvider:StorageProvider,
OutMessages:Messages |
注: 一時的な制限: ProfileName でサポートされる値は「Default」のみです。
[ Storage Provider ] プロパティで使用可能なストレージ プロバイダー タイプで列挙されるドメインです。
Amazon_S3 |
|
Box |
サポートされていません。 |
Google_CloudStorage |
|
IBM_Bluemix |
サポートされていません。 |
IBM_ObjectStorage |
|
Microsoft_Azure |
|
OpenStack |
サポートされていません。 |
例の説明:
- &Properties は Properties データタイプ
- &StorageProvider、&fromStorageProvider、&toStorageProvider は Storage Provider API データタイプ
- &ExternalStorage、&fromExternalStorage、&toExternalStorage は GeneXus.Common.Configuration.ExternalStorage データタイプ
- &Messages は GeneXus.Common.Messages データタイプ
ユースケース 1: プロパティ (Bucket 名) を変更します。
&Properties = new()
&Properties.set(!"BUCKET_NAME", !"my-bucket")
if &ExternalStorage.Connect(!"Default", &Properties, &StorageProvider, &Messages)
//{{ &StorageProvider を使用}}
endIf
ユースケース 2: 実行時にプロバイダーを設定します。
&Properties = new()
&Properties.set(!"STORAGE_PROVIDER_ACCESSKEYID", !"{access-key-id_by-S3}")
&Properties.set(!"STORAGE_PROVIDER_SECRETACCESSKEY", !"{secret-access-key_by-S3}")
&Properties.set(!"STORAGE_PROVIDER_REGION", !"{region}")
&Properties.set(!"STORAGE_ENDPOINT", !"{endpoint_by-S3}")
if &ExternalStorage.Create(StorageProviderType.Amazon_S3, &Properties, &StorageProvider, &Messages)
//{{ &StorageProvider を使用}}
endIf
注: このケースは、マルチテナントシナリオで、各テナントに別のストレージ環境を使用する必要がある場合に便利です。
ユースケース 3: オブジェクト (ファイル) を Bucket 間またはストレージ環境間でコピーします。
&AWSProperties.clear()
&AzureProperties.clear()
if &ExternalStorage.Create(StorageProviderType.Amazon_S3, &AWSProperties, &OutStorageProvider, &OutMessages)
//{{ &OutStorageProvider は Amazon を指定、そこからファイルをダウンロードすることが可能 }}
if &ExternalStorage.Create(StorageProviderType.Microsoft_Azure, &AzureProperties, &OutStorageProvider, &OutMessages)
//{{ &OutStorageProvider は Azure を指定、前にダウンロードしたファイルを Azure にアップロード可能 }}
endIf
endIf
警告: プログラムでは StorageProvider データタイプの 1 つのインスタンスのみ使用できます。そのため、ケース 3 では同じ変数 &OutStorageProvider が使用されています。
ユースケース 4: プロパティの名前を取得します。
cloudservices.config ファイルの Storage セクションで、ストレージプロバイダーに設定可能なプロパティの名前を取得する方法を以下に示します。
- GeneXus IDE では、プロパティに値を割り当てる必要があります (たとえば、Google Cloud Storage への接続を設定するために使用するプロパティなど): [ Service Account Key ] 、 [ Project ID ] 、 [ Application Name ] 。
- これらのプロパティの名前を取得するには、以下の手順を実行します:
- GeneXus が設定ファイルを生成するように、ナレッジベースのビルドを実行します。
- モデルの cloudservices.config ファイルを探します。このファイルはビルド中に生成され、クラウドサービスの設定を含んでいます。
- cloudservices.config ファイルをテキストエディターで開きます。
- ファイル中の Storage セクションを探します。
- Storage セクションの中に、それぞれの名前と値を含むプロパティが見つかります。設定したプロパティに対応するプロパティの名前をコピーします。
使用するプロバイダーの dll/jar は、手動で Web アプリケーションにコピーする必要があります。たとえば、Java と Amazon S3 の場合、"GXInstallationFolder\Services\Storage\AmazonS3\services" フォルダの jar を、Web アプリケーション内のアプリケーションの lib フォルダ "Tomcat\webapps\KBNameJavaEnvironment\WEB-INF\lib" に手動でコピーする必要があります。
ケース 1 とケース 2 は、.NET、.NET Core、および Java ジェネレーターでサポートされます。
ケース 3 は、GeneXus 16 Upgrade 10 以降、.NET および .NET Core ジェネレーターでのみサポートされます。
この機能は
GeneXus 16 Upgrade 10 以降で利用できます。
Storage Provider API