9.2.22 Google Cloud Storage
トピック:
親トピック: ターゲット
9.2.22.1 概要
GCSイベント・ハンドラを使用して、ファイル・ライター・ハンドラによって生成されたファイルをGCSにロードできます。
親トピック: Google Cloud Storage
9.2.22.2 前提条件
- Google Cloud Platform (GCP)アカウントの設定。
- 関連する権限を持つGoogleサービス・アカウント・キー。
- GCS Java Software Developement Kit (SDK)
親トピック: Google Cloud Storage
9.2.22.3 バケットとオブジェクト
親トピック: Google Cloud Storage
9.2.22.4 認証と認可
関連するIdentity and Access Management (IAM)権限を持つサービス・アカウント・キーを作成する必要があります。
JSONキー・タイプを使用して、サービス・アカウント・キー・ファイルを生成します。
環境変数GOOGLE_APPLICATION_CREDENTIALS
またはGCSイベント・ハンドラ・プロパティgg.eventhandler.name.credentialsFile
で、サービス・アカウント・キー・ファイルへのパスを設定できます。資格証明ファイルのパスを直接指定するのではなく、clientId
、clientEmail
、privateKeyId
、privateKey
などの資格証明ファイルの個々のキーを対応するハンドラ・プロパティに指定することもできます。これにより、Oracleウォレットを使用して資格証明キーを暗号化できます。
GCSイベント・ハンドラの実行に使用されるサービス・アカウントに追加するIAM権限を次に示します。
親トピック: Google Cloud Storage
9.2.22.4.1 バケット権限
表9-28 バケット権限
バケット権限名 | 説明 |
---|---|
storage.buckets.create |
プロジェクトに新規バケットを作成します。 |
storage.buckets.delete |
バケットを削除します。 |
storage.buckets.get |
IAMポリシーを除くバケット・メタデータを読み取ります。 |
storage.buckets.list |
プロジェクト内のバケットをリストします。リスト時に、IAMポリシーを除くバケット・メタデータも読み取ります。 |
storage.buckets.update |
IAMポリシーを除くバケット・メタデータを更新します。 |
親トピック: 認証と認可
9.2.22.4.2 オブジェクト権限
表9-29 オブジェクト権限
オブジェクト権限名 | 説明 |
---|---|
storage.objects.create |
新しいオブジェクトをバケットに追加します。 |
storage.objects.delete |
オブジェクトを削除します。 |
storage.objects.get |
ACLを除くオブジェクト・データとメタデータを読み取ります。 |
storage.objects.list |
バケット内のオブジェクトをリストします。リスト時に、ACLを除くオブジェクト・メタデータも読み取ります。 |
storage.objects.update |
ACLを除くオブジェクト・メタデータを更新します。 |
親トピック: 認証と認可
9.2.22.5 構成
表9-30 オブジェクト権限
プロパティ | 必須/オプション | 有効な値 | デフォルト | 説明 |
---|---|---|---|---|
gg.eventhandler.name.type |
必須 | gcs |
なし | ファイル・ライター・ハンドラで使用するGCSイベント・ハンドラを選択します。 |
gg.eventhandler.name.location |
オプション | 有効なGCSの場所。 | なし | GCSバケットが存在しない場合、このGCSの場所に新しいバケットが作成されます。場所を指定しないと、新しいバケットの作成は失敗します。GCSロケーション参照: GCSロケーション。 |
gg.eventhandler.name.bucketMappingTemplate |
必須 | GCSバケット名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 | なし | この名前を使用してGCSバケットが存在しない場合は、GCSイベント・ハンドラによって作成されます。バケットのネーミング・ガイドラインを参照してください。サポートされているキーワードの詳細は、「テンプレートのキーワード」を参照してください。 |
gg.eventhandler.name.pathMappingTemplate |
必須 | ファイルを書き込むGCSバケットのパスを動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 | なし | 定数とインタレースされたキーワードを使用して、一意のGCSパス名を実行時に動的に生成します。パス名の例: ogg/data/${groupName}/${fullyQualifiedTableName} 。サポートされているキーワードの詳細は、テンプレート・キーワードを参照してください。
|
gg.eventhandler.name.fileNameMappingTemplate |
オプション | GCSオブジェクトのファイル名を動的に生成するために使用される、解決可能なキーワードと定数を含む文字列。 | なし | GCSオブジェクト・ファイル名を動的に生成するために使用される、解決可能なキーワードと定数を使用します。設定しない場合、アップストリームのファイル名が使用されます。サポートされているキーワードの詳細は、テンプレート・キーワードを参照してください。 |
gg.eventhandler.name.finalizeAction |
オプション | 子イベント・ハンドラを相互参照する一意の文字列識別子。 | イベント・ハンドラは構成されない。 | ファイル・ロール・イベントで呼び出されるダウンストリーム・イベント・ハンドラを設定します。一般的な例では、ダウンストリームを使用して、BigQueryイベント・ハンドラを使用してGCSデータをGoogle BigQueryにロードします。 |
gg.eventhandler.name.credentialsFile |
オプション | サービス・アカウント・キー・ファイルへの相対パスまたは絶対パス。 | なし | サービス・アカウント・キー・ファイルへのパスを設定します。または、環境変数GOOGLE_APPLICATION_CREDENTIALS がサービス・アカウント・キー・ファイルへのパスに設定されている場合、このパラメータを設定する必要はありません。
|
gg.eventhandler.name.storageClass |
オプション | STANDARD|NEARLINE |COLDLINE|ARCHIVE| REGIONAL|MULTI_REGIONAL| DURABLE_REDUCED_AVAILABILITY |
なし | オブジェクトに設定するストレージ・クラスは、オブジェクトの可用性および価格設定モデルに影響します。このプロパティが設定されていない場合、ファイルのストレージ・クラスは、各バケットのデフォルトのストレージ・クラスに設定されます。バケットが存在せず、ストレージ・クラスが指定されている場合、このストレージ・クラスをデフォルトとして新しいバケットが作成されます。 |
gg.eventhandler.name.kmsKey |
オプション | 次の形式のキー名: projects/<PROJECT>/locations/<LOCATION>/keyRings/<RING_NAME>/cryptoKeys/<KEY_NAME> 。<PROJECT> : GoogleプロジェクトID。<LOCATION> : GCSバケットの場所。<RING_NAME> : Google Cloud KMSキー・リング名。 <KEY_NAME> : Google Cloud KMSキー名。
|
なし | Google Cloud Storageは、Google管理の暗号化キーを使用してディスクに書き込む前に、サーバー側のデータを常に暗号化します。セキュリティの追加レイヤーとして、お客様はGoogle Cloud Key Management Service (KMS)で生成されたキーを使用することを選択できます。このプロパティは、GCSオブジェクトを暗号化するための顧客管理のクラウドKMSキーの設定に使用できます。顧客管理キーを使用する場合、顧客管理キーを使用したGCPではオブジェクト・コンポジションを使用したマルチパート・アップロードが許可されないため、 gg.eventhandler.name.concurrency プロパティを1より大きい値に設定できません。
|
gg.eventhandler.name.concurrency |
オプション | 1から32までの任意の数。 | 10 |
同時実行性が1より大きい値に設定されている場合、GCSイベント・ハンドラはコンポジションを使用してマルチパートのアップロードを実行します。マルチパートのアップロードでは、各パートをアップロードするためのコンカレント・スレッドが生成されます。個々のパートは次のディレクトリ<bucketMappingTemplate>/oggtmp にアップロードされます。このディレクトリは、Oracle GoldenGate for Distributed Applications and Analytics (GG for DAA)で使用するために予約されています。これにより、大きいファイルをアップロードするためのスループットが向上します。マルチパート・アップロードは、サイズが10MBを超えるファイルに使用されます。
|
gg.eventhandler.gcs.clientId |
オプション | 有効なBig Query資格証明クライアントID | 該当なし | Google Big Queryサービス・アカウントに接続するための資格証明ファイルのクライアントIDキーを指定します。 |
gg.eventhandler.gcs.clientEmail |
オプション | 有効なBig Query資格証明クライアント電子メール | 該当なし | Google Big Queryサービス・アカウントに接続するための資格証明ファイルのクライアント電子メール・キーを指定します。 |
gg.eventhandler.gcs.privateKeyId |
オプション | 有効なBig Query資格証明クライアント電子メール | 該当なし | Google Big Queryサービス・アカウントに接続するための資格証明ファイルのクライアント電子メール・キーを指定します。 |
gg.eventhandler.gcs.privateKey |
オプション | 有効なBig Query資格証明秘密キー。 | 該当なし | Google Big Queryサービス・アカウントに接続するための資格証明ファイルの秘密キーを指定します。 |
gg.eventhandler.name.projectId |
オプション | サービス・アカウントに関連付けられたGoogle project-id | project-id 。
|
該当なし | ストレージ・バケットを格納するGoogle Cloudプロジェクトのproject-id を設定します。ユーザーが明示的にオーバーライドしないかぎり、自動構成では、サービス・アカウント・キー・ファイルにアクセスしてこのプロパティが自動的に構成されます。
|
gg.eventhandler.name.url |
オプション | スキーム、サーバー名およびポート(デフォルト・ポートでない場合)を含む、Google Cloud Storageに接続するための有効なURL。デフォルトは、https://storage.googleapis.comです。 | https://storage.googleapis.com | ユーザーは、プライベート・エンドポイントがGCSに接続するためのURLを設定できます。 |
ノート:
GCSをGoogle Cloud Serviceアカウントに接続できるようにするには、資格証明JSONファイルへの相対パスまたは絶対パスを含む資格証明ファイル・プロパティ、または個々の資格証明キーのプロパティのいずれかが構成されていることを確認します。googleサービス・アカウントの資格証明キーを個別に追加する構成プロパティにより、Oracleウォレットを使用して暗号化できます。親トピック: Google Cloud Storage
9.2.22.5.1 クラスパス構成
GCSイベント・ハンドラは、Google Cloud Storage用のJava SDKを使用します。クラスパスには、GCS SDKへのパスが含まれている必要があります。
9.2.22.5.1.1 依存性
<dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-storage</artifactId> <version>1.113.9</version> </dependency>
または、スクリプト <OGGDIR>/DependencyDownloader/gcs.sh
を実行して、GCS依存性をダウンロードできます。
gg.classpath
構成パラメータを編集して、GCS SDKへのパスを含めます。
親トピック: クラスパス構成
9.2.22.5.2 プロキシ構成
jvm.bootoptions
プロパティを使用してプロキシ・サーバー構成を設定できます。次に例を示します:
jvm.bootoptions=-Dhttps.proxyHost=some-proxy-address.com
-Dhttps.proxyPort=80
親トピック: 構成
9.2.22.5.3 サンプル構成
#The GCS Event handler gg.eventhandler.gcs.type=gcs gg.eventhandler.gcs.pathMappingTemplate=${fullyQualifiedTableName} #TODO: Edit the GCS bucket name gg.eventhandler.gcs.bucketMappingTemplate=<gcs-bucket-name> #TODO: Edit the GCS credentialsFile gg.eventhandler.gcs.credentialsFile=/path/to/gcs/credentials-file gg.eventhandler.gcs.finalizeAction=none gg.classpath=/path/to/gcs-deps/* jvm.bootoptions=-Xmx8g -Xms8g
親トピック: 構成
9.2.22.6 トラブルシューティングと診断
Replicatリカバリ後の重複レコード
Google Cloud Storage (GCS)ハンドラ・レプリケーションでは、Replicatでファイル・ライター・ハンドラとGCSハンドラが使用されます。Oracle GoldenGateでは、データ損失がないことが優先されており、GCS (json
、csv
、delimtedtext
、avro_orc
、parquet
)配信において、1回以上のセマンティクスによって、障害発生時にデータ損失がないことが保証されます。Replicatが正常に実行され、正常に停止された場合に、1回のみがサポートされています。障害(ネットワーク障害が原因)が発生した場合は、リカバリにおいて、様々な理由で、重複が発生する可能性があります。
重複が発生する可能性がある2つのケース:
- データが書き込まれ、そのデータの書込みからチェックポイントの移動までの間に障害が発生した場合。その後、Replicatを再起動すると、前のチェックポイントまでバックアップされて、残念ながらデータが繰り返される可能性があります。
- データファイルのローリングは、お客様が構成したトリガーに基づいて実行されます。トリガーは、ファイル・サイズ、時間、非アクティブまたは時刻です。ローリングは、必ずしもトランザクション・コミット境界で起こるとはかぎりません。トリガーにより、現在のファイルへの書込みが完了し、後処理の変換および移動が完了し、そのファイルに関する状態が削除されます。ローリングが処理されてからチェックポイントが移動されるまでの間にReplicatの異常終了が発生した場合は、再起動時に、これらのメッセージが再び繰り返される可能性があります。
GCSのReplicatリカバリによって重複レコードが発生した場合、それは、想定されている動作です。Replicatが正常に実行されている間に重複が発生した場合は、サポート・チケットをご利用ください。
親トピック: Google Cloud Storage