この機能を使用して、実行時に、[ 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_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 が使用されています。
ケース 1 とケース 2 は、.NET、.NET Core、および Java ジェネレーターでサポートされます。
ケース 3 は、GeneXus 16 Upgrade 10 以降、.NET および .NET Core ジェネレーターでのみサポートされます。
この機能は GeneXus 16 Upgrade 10 以降で利用できます。
|