8.2.28 Oracle Cloud Infrastructureオブジェクト・ストレージ
Oracle Cloud Infrastructureイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをOracle Cloud Infrastructureオブジェクト・ストアにロードします。
Oracle Cloud Infrastructureイベント・ハンドラを使用して、フラット・ファイルによって生成されたファイルをOracle Cloud Infrastructureオブジェクト・ストアにロードします。このトピックでは、OCIイベント・ハンドラの使用方法について説明します。
8.2.28.1 概要
Oracle Cloud Infrastructure Object Storageサービスは、信頼性およびコスト効率が高いデータ耐久性を実現するインターネット規模の高パフォーマンス・ストレージ・プラットフォームです。Object Storageサービスは、分析データやリッチ・コンテンツ(イメージやビデオなど)を含め、あらゆるコンテンツ・タイプの非構造化データを無制限に格納できます。https://cloud.oracle.com/en_US/cloud-infrastructureを参照してください。
ファイル・ライター・ハンドラでサポートされるフォーマット・ハンドラはすべて使用できます。
8.2.28.2 機能の詳細
Oracle Cloud Infrastructureイベント・ハンドラには、Oracle Cloud Infrastructure Object Storageにファイルを転送するためのOracle Cloud Infrastructure Javaソフトウェア開発キット(SDK)が必要です。Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)には、Oracle Cloud Infrastructure Java SDKが付属していません。https://docs.cloud.oracle.com/iaas/Content/API/Concepts/sdkconfig.htmを参照してください。
Oracle Cloud Infrastructure Java SDKは、次の場所でダウンロードする必要があります。
https://docs.us-phoenix-1.oraclecloud.com/Content/API/SDKDocs/javasdk.htm
JARファイルを永続ディレクトリに解凍します。ハンドラには、Oracle Cloud Infrastructure SDK JARがあるJARライブラリ・ディレクトリとサード・パーティのJARライブラリの2つのディレクトリが必要です。両方のディレクトリは、gg.classpath
にある必要があります。
環境変数gg.classpath
を指定し、Oracle Cloud Infrastructure Java SDKのJARファイルを含めます。
例
gg.classpath=/usr/var/oci/lib/*:/usr/var/oci/third-party/lib/*
プロキシ・サーバー設定を設定するには、次のMaven座標で識別される追加の依存性ライブラリが必要です。
グループID: com.oracle.oci.sdk
アーティファクトID: oci-java-sdk-addons-apache
すべての依存関係を取得する最善の方法は、依存関係のダウンロード・ユーティリティ・スクリプトを使用することです。OCIスクリプトは、OCI Java SDKおよびApache Addonsライブラリの両方をダウンロードします。
この依存性の詳細は、OCIドキュメント- READMEを参照してください。
8.2.28.3 構成
Oracle Cloud Infrastructureイベント・ハンドラの操作は、プロパティ・ファイルを使用して構成します。これらのプロパティは、Java Adapterプロパティ・ファイルにあり、Replicatプロパティ・ファイルにはありません。
Oracle Cloud Infrastructureイベント・ハンドラは、ファイル・ライター・ハンドラとの組合せでのみ機能します。
Oracle Cloud Infrastructureイベント・ハンドラの選択を有効にするには、まずgg.eventhandler.name.type=oci
およびその他のOracle Cloud Infrastructureプロパティを次のように指定してハンドラ・タイプを構成する必要があります。
表8-33 Oracle Cloud Infrastructureイベント・ハンドラの構成プロパティ
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
|
必須 |
|
なし |
Oracle Cloud Infrastructureイベント・ハンドラを選択します。 |
gg.eventhandler.name.contentType |
オプション | リソースのメディア・タイプを示すために使用される有効なコンテンツ・タイプ値。 | application/octet-stream |
オブジェクトのコンテンツ・タイプ。 |
gg.eventhandler.name.contentEncoding |
オプション | 有効な値は、適用されるエンコーディングを示します。 | utf-8 | オブジェクトのコンテンツ・エンコーディング。 |
gg.eventhandler.name.contentLanguage |
オプション | 利用者のための有効な言語。 | en | オブジェクトのコンテンツ言語。 |
|
オプション |
イベント・ハンドラの |
なし |
構成ファイルの名前および場所。 gg.eventhandler.name.configFilePath が設定されていない場合は、次の認証パラメータが必要です。
gg.eventhandler.name.configFilePath より優先されます。
|
gg.eventhandler.name.userId |
オプション | 有効なユーザーID | なし | APIをコールするユーザーのOCID。値を取得するには、(必要なキーおよびOCID) https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#Required_Keys_and_OCIDsを参照してください。例: ocid1.user.oc1..<unique_ID> (簡潔にするために短縮)
|
gg.eventhandler.name.tenancyId |
オプション | 有効なテナンシID | なし | テナンシのOCID。値を取得するには、Oracle Cloud Infrastructureドキュメントの(必要なキーおよびOCID) https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#Required_Keys_and_OCIDsを参照してください。例: ocid1.tenancy.oc1..<unique_ID> |
gg.eventhandler.name.privateKeyFile |
オプション | ファイルへの有効なパス | なし | 秘密キーのフルパスとファイル名。
ノート: キー・ペアはPEM形式である必要があります。PEM形式でのキー・ペアの生成の詳細は、Oracle Cloud Infrastructureドキュメントの(必要なキーおよびOCID) https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#Required_Keys_and_OCIDsを参照してください。例: /home/opc/.oci/oci_api_key.pem |
gg.eventhandler.name.publicKeyFingerprint |
オプション | 文字列 | なし | このユーザーに追加された公開キーのフィンガープリント。値を取得するには、Oracle Cloud Infrastructureドキュメントの(必要なキーおよびOCID) https://docs.oracle.com/en-us/iaas/Content/API/Concepts/apisigningkey.htm#Required_Keys_and_OCIDsを参照してください。 |
|
必須 |
プロファイル名を表す有効な文字列。 |
|
Oracle Cloud Infrastructureの |
|
必須 |
Oracle Cloud Infrastructureのリージョン。 |
なし |
Oracle Cloud Infrastructureのサーバーおよびデータはリージョンでホストされ、ローカライズされた地理的領域です。 有効なリージョン識別子は、「Oracle Cloud Infrastructure Documentation - Regions and Availability Domains」に一覧表示されています。 |
|
必須 |
有効なコンパートメントID。 |
なし |
コンパートメントは、Oracle Cloud Infrastructureのリソースを編成するための論理コンテナです。 |
|
必須 |
ファイルを書き込むOracle Cloud Infrastructureバケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
定数とともにインタレースされるキーワードを使用して、実行時に一意のOracle Cloud Infrastructureパス名を動的に生成します。テンプレート・キーワードを参照してください。 |
|
オプション |
実行時にOracle Cloud Infrastructureファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
解決可能なキーワードと定数を使用して、実行時にOracle Cloud Infrastructureデータ・ファイル名を動的に生成します。設定しない場合、アップストリームのファイル名が使用されます。テンプレート・キーワードを参照してください。 |
|
必須 |
ファイルを書き込むOracle Cloud Infrastructureバケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 |
なし |
解決可能なキーワードと定数を使用して、実行時にOracle Cloud Infrastructureバケット名を動的に生成します。Oracle Cloud Infrastructureバケットが存在しない場合、イベント・ハンドラはOracle Cloud Infrastructureバケットを作成しようとします。テンプレート・キーワードを参照してください。 |
|
オプション |
|
なし |
ファイナライズ・アクションでOracle Cloud Infrastructureデータ・ファイルを残す場合は、 |
|
オプション |
子イベント・ハンドラを相互参照する一意の文字列識別子。 |
イベント・ハンドラは構成されません。 |
ファイル・ロール・イベントで呼び出されるイベント・ハンドラを設定します。イベント・ハンドラは、S3へのファイルのロード、ParquetまたはORCフォーマットへの変換、HDFSへのファイルのロード、Oracle Cloud Infrastructure Storage Classicへのファイルのロード、Oracle Cloud Infrastructureへのファイルのロードなどのファイル・ロール・イベント・アクションを実行できます。 |
gg.eventhandler.name.proxyServer |
オプション | プロキシ・サーバーのホスト名。 | なし | OCI接続でプロキシ・サーバーを介したルーティングが必要な場合は、プロキシ・サーバーのホスト名に設定します。 |
gg.eventhandler.name.proxyPort |
オプション | プロキシ・サーバーのポート番号。 | なし | OCI接続でプロキシ・サーバーを介したルーティングが必要な場合は、プロキシ・サーバーのポート番号に設定します。 |
gg.eventhandler.name.proxyProtocol |
オプション |
HTTP | HTTPS |
HTTP |
セキュリティ・レベルの追加のためにプロキシ・サーバーへのプロキシ・プロトコル接続を設定します。プロキシ・サーバーの大部分はHTTPをサポートしています。プロキシ・サーバーがHTTPSをサポートし、HTTPSが必要な場合にのみこれを設定します。 |
gg.eventhandler.name.proxyUsername |
オプション | プロキシ・サーバーのユーザー名。 | なし | 資格証明が必要な場合、プロキシ・サーバーに接続するためのユーザー名を設定します。ほとんどのプロキシ・サーバーでは、資格証明は必要ありません。 |
gg.eventhandler.name.proxyPassword |
オプション | プロキシ・サーバーのパスワード。 | なし | 資格証明が必要な場合、プロキシ・サーバーに接続するためのパスワードを設定します。ほとんどのプロキシ・サーバーでは、資格証明は必要ありません。 |
gg.handler.name.SSEKey |
オプション | 有効なBase64でエンコードされたOCIサーバー側の暗号化キー。 | なし | OCIにロードされたデータ・ファイルの暗号化を制御できます。OCIはデフォルトで暗号化を行います。このプロパティを使用すると、特定のキーによる暗号化がサポートされ、より詳細な制御が可能になります。このキーはデータ・ファイルの復号化にも使用する必要があります。 |
サンプル構成
gg.eventhandler.oci.type=oci gg.eventhandler.oci.configFilePath=~/.oci/config gg.eventhandler.oci.profile=DEFAULT gg.eventhandler.oci.namespace=dwcsdemo gg.eventhandler.oci.region=us-ashburn-1 gg.eventhandler.oci.compartmentID=ocid1.compartment.oc1..aaaaaaaajdg6iblwgqlyqpegf6kwdais2gyx3guspboa7fsi72tfihz2wrba gg.eventhandler.oci.pathMappingTemplate=${schemaName} gg.eventhandler.oci.bucketMappingTemplate=${schemaName} gg.eventhandler.oci.fileNameMappingTemplate=${tableName}_${currentTimestamp}.txt gg.eventhandler.oci.finalizeAction=NONE goldengate.userexit.writers=javawriter
8.2.28.3.1 自動構成
OCIオブジェクト・ストレージ・レプリケーションでは、ファイル・ライター・ハンドラ、フォーマッタ、ターゲットのOCIオブジェクト・ストレージ・イベント・ハンドラなど、複数のコンポーネントの構成が含まれます。
自動構成機能は、手動構成が最小限に抑えられるようにこれらのコンポーネントを自動化できます。
自動構成によって変更されたプロパティもハンドラのログ・ファイルに記録されます。
自動構成でOCIオブジェクト・ストレージ・ターゲットにレプリケートできるようにするには、パラメータgg.target=oci
を設定します。
親トピック: 構成
8.2.28.3.1.1 ファイル・ライター・ハンドラの構成
ファイル・ライター・ハンドラ名は、値oci
に事前設定されています。
ファイル・ライター・ハンドラのプロパティを追加または編集できます。例: gg.handler.oci.pathMappingTemplate=./dirout
親トピック: 自動構成
8.2.28.3.1.2 フォーマッタ構成
json行フォーマッタはデフォルトで設定されています。
フォーマッタのプロパティを追加または編集できます。例: gg.handler.oci.format=json_row
親トピック: 自動構成
8.2.28.4 Oracle Cloud Infrastructureの資格証明の構成
Java SDKが機能するには、ユーザー資格証明などの基本構成情報およびOracle Cloud InfrastructureのテナントOracle Cloud ID (OCID)が必要です。https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htmを参照してください。
理想的な構成ファイルには、user
、fingerprint
、key_file
、tenancy
およびregion
の各キーとそれぞれの値が含まれます。デフォルトの構成ファイルの名前と場所は、~/.oci/config
です。
次のように、config
ファイルを作成します。
- Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)ホーム・ディレクトリに
.oci
というディレクトリを作成します。 - テキスト・ファイルを作成し、
config
と名前を付けます。 - 次のプロパティの値を取得します。
-
user
-
- Oracle Cloud Infrastructureコンソール(https://console.us-ashburn-1.oraclecloud.com)にログインします。
- 「ユーザー名」をクリックします。
- 「ユーザー設定」をクリックします。
ユーザーのOCIDが表示され、これがキー・ユーザーの値です。
-
tenancy
-
テナントIDがコンソール・ページの下部に表示されます。
-
region
-
コンソールのヘッダー・セッション・ドロップダウン・メニューでリージョンが表示されます。
-
fingerprint
-
フィンガープリントを生成するには、次のキーのフィンガープリントの取得方法の手順に従います。
https://docs.cloud.oracle.com/iaas/Content/API/Concepts/apisigningkey.htm
-
key_file
-
Oracle Cloud Infrastructureとの接続を確立するには、公開キーと秘密キーを共有する必要があります。キーを生成するには、次のAPI署名キーの生成方法に従います。
https://docs.cloud.oracle.com/iaas/Content/API/Concepts/apisigningkey.htm
-
pass_phrase
- これは、オプションのプロパティです。pemファイル内の秘密キーがパスフェーズで保護されている場合、パスフレーズを構成するために使用されます。次のopensslコマンドを使用して、保護されていない秘密キーのpemファイルを取得し、パスフレーズを追加できます。
次のコマンドは、ユーザーにパスフレーズを要求します:
openssl rsa -aes256 -in in.pem -out out.pem
-
サンプル構成ファイル
user=ocid1.user.oc1..aaaaaaaat5nvwcna5j6aqzqedqw3rynjq fingerprint=20:3b:97:13::4e:c5:3a:34 key_file=~/.oci/oci_api_key.pem tenancy=ocid1.tenancy.oc1..aaaaaaaaba3pv6wkcr44h25vqstifs
8.2.28.5 トラブルシューティング
接続の問題
オンプレミスで実行していて、OCIイベント・ハンドラがOCIオブジェクト・ストレージに接続できない場合は、プロキシ・サーバーによってパブリック・インターネットへの接続が保護されている可能性が高くなります。プロキシ・サーバーは、企業のプライベート・ネットワークとパブリック・インターネットとの間のゲートウェイとして機能します。プロキシ・サーバーのURLを取得するには、ネットワーク管理者に問い合せてください。
OCIへのOracle GoldenGate for Distributed Applications and Analytics (GG for DAA)の接続は、次の構成プロパティを設定することで、プロキシ・サーバーを介してルーティングできます。
gg.eventhandler.name.proxyServer={insert your proxy server name} gg.eventhandler.name.proxyPort={insert your proxy server port number}
ClassNotFoundExceptionエラー
最も一般的な初期エラーは、必要なすべてのクライアント・ライブラリが含まれていない正しくないクラスパスで、これによりClassNotFoundException
エラーが発生します。Oracle Cloud Infrastructure Java SDKの必要なJARファイルをすべて含めるためにgg.classpath
変数を指定します。機能の詳細を参照してください。
8.2.28.6 OCI依存性
OCIのMaven座標は次のとおりです。
Maven groupId: com.oracle.oci.sdk
Maven artifactId: oci-java-sdk-full
バージョン: 1.34.0
次に、プロキシサーバーを介したルーティングをサポートするApacheアドオンを示します。
Maven groupId: com.oracle.oci.sdk
Maven artifactId: oci-java-sdk-addons-apache
バージョン: 1.34.0
8.2.28.6.1 OCI 1.34.0
accessors-smart-1.2.jar aopalliance-repackaged-2.6.1.jar asm-5.0.4.jar bcpkix-jdk15on-1.68.jar bcprov-jdk15on-1.68.jar checker-qual-3.5.0.jar commons-codec-1.15.jar commons-io-2.8.0.jar commons-lang3-3.8.1.jar commons-logging-1.2.jar error_prone_annotations-2.3.4.jar failureaccess-1.0.1.jar guava-30.1-jre.jar hk2-api-2.6.1.jar hk2-locator-2.6.1.jar hk2-utils-2.6.1.jar httpclient-4.5.13.jar httpcore-4.4.13.jar j2objc-annotations-1.3.jar jackson-annotations-2.12.0.jar jackson-core-2.12.0.jar jackson-databind-2.12.0.jar jackson-datatype-jdk8-2.12.0.jar jackson-datatype-jsr310-2.12.0.jar jackson-module-jaxb-annotations-2.10.1.jar jakarta.activation-api-1.2.1.jar jakarta.annotation-api-1.3.5.jar jakarta.inject-2.6.1.jar jakarta.ws.rs-api-2.1.6.jar jakarta.xml.bind-api-2.3.2.jar javassist-3.25.0-GA.jar jcip-annotations-1.0-1.jar jersey-apache-connector-2.32.jar jersey-client-2.32.jar jersey-common-2.32.jar jersey-entity-filtering-2.32.jar jersey-hk2-2.32.jar jersey-media-json-jackson-2.32.jar json-smart-2.3.jar jsr305-3.0.2.jar listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar nimbus-jose-jwt-8.5.jar oci-java-sdk-addons-apache-1.34.0.jar oci-java-sdk-analytics-1.34.0.jar oci-java-sdk-announcementsservice-1.34.0.jar oci-java-sdk-apigateway-1.34.0.jar oci-java-sdk-apmcontrolplane-1.34.0.jar oci-java-sdk-apmsynthetics-1.34.0.jar oci-java-sdk-apmtraces-1.34.0.jar oci-java-sdk-applicationmigration-1.34.0.jar oci-java-sdk-artifacts-1.34.0.jar oci-java-sdk-audit-1.34.0.jar oci-java-sdk-autoscaling-1.34.0.jar oci-java-sdk-bds-1.34.0.jar oci-java-sdk-blockchain-1.34.0.jar oci-java-sdk-budget-1.34.0.jar oci-java-sdk-cims-1.34.0.jar oci-java-sdk-circuitbreaker-1.34.0.jar oci-java-sdk-cloudguard-1.34.0.jar oci-java-sdk-common-1.34.0.jar oci-java-sdk-computeinstanceagent-1.34.0.jar oci-java-sdk-containerengine-1.34.0.jar oci-java-sdk-core-1.34.0.jar oci-java-sdk-database-1.34.0.jar oci-java-sdk-databasemanagement-1.34.0.jar oci-java-sdk-datacatalog-1.34.0.jar oci-java-sdk-dataflow-1.34.0.jar oci-java-sdk-dataintegration-1.34.0.jar oci-java-sdk-datasafe-1.34.0.jar oci-java-sdk-datascience-1.34.0.jar oci-java-sdk-dns-1.34.0.jar oci-java-sdk-dts-1.34.0.jar oci-java-sdk-email-1.34.0.jar oci-java-sdk-events-1.34.0.jar oci-java-sdk-filestorage-1.34.0.jar oci-java-sdk-full-1.34.0.jar oci-java-sdk-functions-1.34.0.jar oci-java-sdk-goldengate-1.34.0.jar oci-java-sdk-healthchecks-1.34.0.jar oci-java-sdk-identity-1.34.0.jar oci-java-sdk-integration-1.34.0.jar oci-java-sdk-keymanagement-1.34.0.jar oci-java-sdk-limits-1.34.0.jar oci-java-sdk-loadbalancer-1.34.0.jar oci-java-sdk-loganalytics-1.34.0.jar oci-java-sdk-logging-1.34.0.jar oci-java-sdk-loggingingestion-1.34.0.jar oci-java-sdk-loggingsearch-1.34.0.jar oci-java-sdk-managementagent-1.34.0.jar oci-java-sdk-managementdashboard-1.34.0.jar oci-java-sdk-marketplace-1.34.0.jar oci-java-sdk-monitoring-1.34.0.jar oci-java-sdk-mysql-1.34.0.jar oci-java-sdk-networkloadbalancer-1.34.0.jar oci-java-sdk-nosql-1.34.0.jar oci-java-sdk-objectstorage-1.34.0.jar oci-java-sdk-objectstorage-extensions-1.34.0.jar oci-java-sdk-objectstorage-generated-1.34.0.jar oci-java-sdk-oce-1.34.0.jar tbcampbe: oci-java-sdk-ocvp-1.34.0.jar oci-java-sdk-oda-1.34.0.jar oci-java-sdk-ons-1.34.0.jar oci-java-sdk-opsi-1.34.0.jar oci-java-sdk-optimizer-1.34.0.jar oci-java-sdk-osmanagement-1.34.0.jar oci-java-sdk-resourcemanager-1.34.0.jar oci-java-sdk-resourcesearch-1.34.0.jar oci-java-sdk-rover-1.34.0.jar oci-java-sdk-sch-1.34.0.jar oci-java-sdk-secrets-1.34.0.jar oci-java-sdk-streaming-1.34.0.jar oci-java-sdk-tenantmanagercontrolplane-1.34.0.jar oci-java-sdk-usageapi-1.34.0.jar oci-java-sdk-vault-1.34.0.jar oci-java-sdk-waas-1.34.0.jar oci-java-sdk-workrequests-1.34.0.jar osgi-resource-locator-1.0.3.jar resilience4j-circuitbreaker-1.2.0.jar resilience4j-core-1.2.0.jar slf4j-api-1.7.29.jar vavr-0.10.0.jar vavr-match-0.10.0.jar
親トピック: OCI依存性