Google Cloud Storage への認証
認証方法
v3.0 以降、StarRocks は Google Cloud Storage (GCS) にアクセスするために以下の認証方法のいずれかをサポートしています。
- 
VM ベースの認証
Google Cloud Compute Engine にアタッチされたクレデンシャルを使用して GCS を認証します。
 - 
サービスアカウントベースの認証
サービスアカウントを使用して GCS を認証します。
 - 
インパーソネーションベースの認証
サービスアカウントまたは仮想マシン (VM) インスタンスを他のサービスアカウントにインパーソネートさせます。
 
シナリオ
StarRocks は以下のシナリオで GCS に認証できます。
- GCS からデータをバッチロードします。
 - GCS からデータをバックアップし、GCS にデータを復元します。
 - GCS 内の Parquet および ORC ファイルをクエリします。
 - GCS 内の Hive、Iceberg、Hudi、および Delta Lake テーブルをクエリします。
 
このトピックでは、Hive catalog、file external table、および Broker Load を例として、StarRocks が異なるシナリオで GCS とどのように統合されるかを示します。例の StorageCredentialParams に関する情報は、このトピックの「Parameters」セクションを参照してください。
注意
StarRocks は、gs プロトコルに従って GCS からデータをロードしたり、ファイルを直接クエリしたりすることのみをサポートしています。したがって、GCS からデータをロードしたり、ファイルをクエリしたりする場合は、ファイルパスのプレフィックスに
gsを含める必要があります。
External catalog
GCS からファイルをクエリするために、hive_catalog_gcs という名前の Hive catalog を作成するには、CREATE EXTERNAL CATALOG ステートメントを使用します。
CREATE EXTERNAL CATALOG hive_catalog_gcs
PROPERTIES
(
    "type" = "hive", 
    "hive.metastore.uris" = "thrift://xx.xx.xx.xx:9083",
    StorageCredentialParams
);
File external table
GCS からメタストアなしで test_file_external_tbl という名前のデータファイルをクエリするために、external_table_gcs という名前のファイル外部テーブルを作成するには、CREATE EXTERNAL TABLE ステートメントを使用します。
CREATE EXTERNAL TABLE external_table_gcs
(
    id varchar(65500),
    attributes map<varchar(100), varchar(2000)>
) 
ENGINE=FILE
PROPERTIES
(
    "path" = "gs:////test-gcs/test_file_external_tbl",
    "format" = "ORC",
    StorageCredentialParams
);
Broker load
GCS から StarRocks テーブル target_table にデータをバッチロードするために、ラベルが test_db.label000 の Broker Load ジョブを作成するには、LOAD LABEL ステートメントを使用します。
LOAD LABEL test_db.label000
(
    DATA INFILE("gs://bucket_gcs/test_brokerload_ingestion/*")
    INTO TABLE target_table
    FORMAT AS "parquet"
)
WITH BROKER
(
    StorageCredentialParams
);
Parameters
StorageCredentialParams は、異なる認証方法で GCS に認証する方法を説明するパラメータセットを表します。
VM ベースの認証
StarRocks クラスターが Google Cloud Platform (GCP) 上の VM インスタンスにデプロイされており、その VM インスタンスを使用して GCS を認証したい場合、StorageCredentialParams を次のように設定します。
"gcp.gcs.use_compute_engine_service_account" = "true"
以下の表は、StorageCredentialParams で設定する必要があるパラメータを説明しています。
| Parameter | Default value | Value example | Description | 
|---|---|---|---|
| gcp.gcs.use_compute_engine_service_account | false | true | Compute Engine にバインドされたサービスアカウントを直接使用するかどうかを指定します。 | 
サービスアカウントベースの認証
サービスアカウントを直接使用して GCS を認証する場合、StorageCredentialParams を次のように設定します。
"gcp.gcs.service_account_email" = "<google_service_account_email>",
"gcp.gcs.service_account_private_key_id" = "<google_service_private_key_id>",
"gcp.gcs.service_account_private_key" = "<google_service_private_key>"
以下の表は、StorageCredentialParams で設定する必要があるパラメータを説明しています。
| Parameter | Default value | Value example | Description | 
|---|---|---|---|
| gcp.gcs.service_account_email | "" | "user@hello.iam.gserviceaccount.com" | サービスアカウント作成時に生成された JSON ファイル内のメールアドレス。 | 
| gcp.gcs.service_account_private_key_id | "" | "61d257bd8479547cb3e04f0b9b6b9ca07af3b7ea" | サービスアカウント作成時に生成された JSON ファイル内のプライベートキー ID。 | 
| gcp.gcs.service_account_private_key | "" | "-----BEGIN PRIVATE KEY----xxxx-----END PRIVATE KEY-----\n" | サービスアカウント作成時に生成された JSON ファイル内のプライベートキー。 | 
インパーソネーションベースの認証
VM インスタンスをサービスアカウントにインパーソネートさせる
StarRocks クラスターが GCP 上の VM インスタンスにデプロイされており、その VM インスタンスをサービスアカウントにインパーソネートさせて、StarRocks がサービスアカウントからの権限を継承して GCS にアクセスできるようにしたい場合、StorageCredentialParams を次のように設定します。
"gcp.gcs.use_compute_engine_service_account" = "true",
"gcp.gcs.impersonation_service_account" = "<assumed_google_service_account_email>"
以下の表は、StorageCredentialParams で設定する必要があるパラメータを説明しています。
| Parameter | Default value | Value example | Description | 
|---|---|---|---|
| gcp.gcs.use_compute_engine_service_account | false | true | Compute Engine にバインドされたサービスアカウントを直接使用するかどうかを指定します。 | 
| gcp.gcs.impersonation_service_account | "" | "hello" | インパーソネートしたいサービスアカウント。 | 
サービスアカウントを他のサービスアカウントにインパーソネートさせる
サービスアカウント(仮にメタサービスアカウントと呼びます)を他のサービスアカウント(仮にデータサービスアカウントと呼びます)にインパーソネートさせ、StarRocks がデータサービスアカウントからの権限を継承して GCS にアクセスできるようにしたい場合、StorageCredentialParams を次のように設定します。
"gcp.gcs.service_account_email" = "<google_service_account_email>",
"gcp.gcs.service_account_private_key_id" = "<meta_google_service_account_email>",
"gcp.gcs.service_account_private_key" = "<meta_google_service_account_email>",
"gcp.gcs.impersonation_service_account" = "<data_google_service_account_email>"
以下の表は、StorageCredentialParams で設定する必要があるパラメータを説明しています。
| Parameter | Default value | Value example | Description | 
|---|---|---|---|
| gcp.gcs.service_account_email | "" | "user@hello.iam.gserviceaccount.com" | メタサービスアカウント作成時に生成された JSON ファイル内のメールアドレス。 | 
| gcp.gcs.service_account_private_key_id | "" | "61d257bd8479547cb3e04f0b9b6b9ca07af3b7ea" | メタサービスアカウント作成時に生成された JSON ファイル内のプライベートキー ID。 | 
| gcp.gcs.service_account_private_key | "" | "-----BEGIN PRIVATE KEY----xxxx-----END PRIVATE KEY-----\n" | メタサービスアカウント作成時に生成された JSON ファイル内のプライベートキー。 | 
| gcp.gcs.impersonation_service_account | "" | "hello" | インパーソネートしたいデータサービスアカウント。 |