FILES
リモートストレージ内のデータファイルを定義し、データロードとデータアンロードに使用します。
FILES() は以下のデータソースとファイル形式をサポートしています。
- データソース:
- HDFS
- AWS S3
- Google Cloud Storage
- その他の S3 互換ストレージシステム
- Microsoft Azure Blob Storage
- NFS(NAS)
- ファイル形式:
- Parquet
- ORC (v3.3 以降でサポート)
- CSV (v3.3 以降でサポート)
- Avro (v3.4.4 以降でサポート、ロードのみ)
v3.2 以降、FILES() は基本データ型に加えて、ARRAY、JSON、MAP、STRUCT などの複雑なデータ型もサポートしています。
FILES() for loading
v3.1.0 以降、StarRocks はテーブル関数 FILES() を使用してリモートストレージ内の読み取り専用ファイルを定義することをサポートしています。ファイルのパス関連プロパティを使用してリモートストレージにアクセスし、ファイル内のデータのテーブルスキーマを推測し、データ行を返します。データ行を直接クエリするには SELECT を使用し、既存のテーブルにデータ行をロードするには INSERT を使用し、新しいテーブルを作成してデータ行をロードするには CREATE TABLE AS SELECT を使用します。v3.3.4 以降、FILES() を使用してデータファイルのスキーマを DESC で表示することもできます。
構文
FILES( data_location , [data_format] [, schema_detect ] [, StorageCredentialParams ] [, columns_from_path ] [, list_files_only ] [, list_recursively])
パラメータ
すべてのパラメータは "key" = "value" のペアで指定します。
data_location
ファイルにアクセスするために使用される URI です。
パスまたはファイルを指定できます。たとえば、HDFS サーバー上のパス /user/data/tablename からデータファイル 20210411 をロードするには、このパラメータを "hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/20210411" と指定します。
ワイルドカード ?, *, [], または ^ を使用して複数のデータファイルの保存パスを指定することもできます。たとえば、HDFS サーバー上のパス /user/data/tablename 内のすべてのパーティションまたは 202104 パーティションのみからデータファイルをロードするには、このパラメータを "hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/*/*" または "hdfs://<hdfs_host>:<hdfs_port>/user/data/tablename/dt=202104*/*" と指定します。
ワイルドカードは中間パスを指定するためにも使用できます。
-
HDFS にアクセスするには、このパラメータを次のように指定する必要があります。
"path" = "hdfs://<hdfs_host>:<hdfs_port>/<hdfs_path>"
-- 例: "path" = "hdfs://127.0.0.1:9000/path/file.parquet" -
AWS S3 にアクセスするには:
-
S3 プロトコルを使用する場合、このパラメータを次のように指定する必要があります。
"path" = "s3://<s3_path>"
-- 例: "path" = "s3://path/file.parquet" -
S3A プロトコルを使用する場合、このパラメータを次のように指定する必要があります。
"path" = "s3a://<s3_path>"
-- 例: "path" = "s3a://path/file.parquet"
-
-
Google Cloud Storage にアクセスするには、このパラメータを次のように指定する必要があります。
"path" = "s3a://<gcs_path>"
-- 例: "path" = "s3a://path/file.parquet" -
Azure Blob Storage にアクセスするには:
-
ストレージアカウントが HTTP 経由でのアクセスを許可している場合、このパラメータを次のように指定する必要があります。
"path" = "wasb://<container>@<storage_account>.blob.core.windows.net/<blob_path>"
-- 例: "path" = "wasb://testcontainer@testaccount.blob.core.windows.net/path/file.parquet" -
ストレージアカウントが HTTPS 経由でのアクセスを許可している場合、このパラメータを次のように指定する必要があります。
"path" = "wasbs://<container>@<storage_account>.blob.core.windows.net/<blob_path>"
-- 例: "path" = "wasbs://testcontainer@testaccount.blob.core.windows.net/path/file.parquet"
-
-
NFS(NAS) にアクセスするには:
"path" = "file:///<absolute_path>"
-- 例: "path" = "file:///home/ubuntu/parquetfile/file.parquet"注記file://プロトコルを介して NFS(NAS) にアクセスするには、同じ NAS デバイスを NFS として、パスにアクセスする必要があるノード上の同じディレクトリにマウントしてください。- 読み取り/書き込み操作の場合、各 FE ノードおよび各 BE または CN ノードにマウントする必要があります。FE ノードはファイルを一覧表示し、ファイルスキーマを推論します。BE/CN ノードはデータを読み取ります。
- 書き込みのみの操作の場合、各 BE または CN ノードにマウントする必要があります。
data_format
データファイルの形式です。 有効な値:
parquetorc(v3.3 以降でサポート)csv(v3.3 以降でサポート)avro(v3.4.4 以降でサポート、ロードのみ)
特定のデータファイル形式に対して詳細なオプションを設定する必要があります。
list_files_only が true に設定されている場合、data_format を指定する必要はありません。
Parquet
Parquet 形式の例:
"format"="parquet",
"parquet.use_legacy_encoding" = "true", -- アンロードのみ
"parquet.version" = "2.6" -- アンロードのみ
Parquet ファイルを読み取る際(たとえば FILES() または Broker Load を使用)、StarRocks は Parquet TIMESTAMP 論理型をその isAdjustedToUTC 属性に従って DATETIME にマッピングします:
- インスタントセマンティクス:
isAdjustedToUTCがtrueの場合、その値は UTC に正規化されたタイムライン上の瞬間を特定します。StarRocks は現在のセッションタイムゾーンにおける壁時計時刻に変換します。 - ローカルセマンティクス:
isAdjustedToUTCがfalseの場合、その値はタイムゾーンを持たない壁時計時刻です。StarRocks はセッションタイムゾーンに関係なく、書き込まれたままの値を返します。 - レガシーな INT96 物理型は
isAdjustedToUTC属性を持ちません。StarRocks は、INT96 タイムスタンプがトップレベルの列であるか STRUCT、ARRAY、または MAP 内にネストされているかにかかわらず、INT96 列を UTC に正規化された瞬間として扱い、セッションタイムゾーンに変換します。
動作変更: 以前のバージョンでは、StarRocks はローカルセマンティクス(isAdjustedToUTC が false)のタイムスタンプを読み取る際、セッションタイムゾーンのオフセット分だけ値をシフトしていました。現在は書き込まれたままの値が返されます。セッションタイムゾーンが UTC でない場合、同じファイルから返される値は以前のバージョンと異なります(現在の動作は Parquet 仕様に準拠しています)。
parquet.use_legacy_encoding
DATETIME および DECIMAL データ型に使用されるエンコーディング技術を制御します。 有効な値: true および false (デフォルト)。このプロパティはデータアンロードにのみサポートされています。
この項目が true に設定されている場合:
- DECIMAL 型の場合、システムは
fixed_len_byte_arrayエンコーディングを使用します。 - DATETIME 型の場合、システムは
INT96エンコーディングを使用します。
この項目が false に設定されている場合:
- DECIMAL 型の場合、システムは
INT32またはINT64エンコーディングを使用します。 - DATETIME 型の場合、システムは
INT64エンコーディングを使用します。- インスタントセマンティクス:Parquet の TIMESTAMP型に対して
isAdjustedToUTCがtrueに設定されている場合、システムは UTC に正規化されたタイムスタンプを出力します。各値はタイムライン上の単一の瞬間を明確に特定し、特定のタイムゾーンに変換することができます。 - ローカルセマンティクス:Parquet の TIMESTAMP 型に対して
isAdjustedToUTCがfalseに設定されている場合、システムは、どのタイムゾーンがローカルとみなされるかに関係なく、ローカルタイムゾーンにおける年、月、日、時、分、秒、およびサブ秒を表すタイムスタンプを出力します。このような値は、適用されているローカルタイムゾーンに関係なく常に同じ形式で表示され、タイムライン上の特定の瞬間を特定するものではありません。
- インスタントセマンティクス:Parquet の TIMESTAMP型に対して
DECIMAL 128 データ型の場合、fixed_len_byte_array エンコーディングのみが利用可能です。parquet.use_legacy_encoding は効果を持ちません。
parquet.version
システムがデータをアンロードする Parquet バージョンを制御します。v3.4.6 以降でサポートされています。 有効な値: 1.0, 2.4, および 2.6 (デフォルト)。このプロパティはデータアンロードにのみサポートされています。
CSV
CSV 形式の例:
"format"="csv",
"csv.column_separator"="\\t",
"csv.enclose"='"',
"csv.skip_header"="1", -- ロードのみ
"csv.escape"="\\"
csv.column_separator
データファイルが CSV 形式の場合に使用される列区切り文字を指定します。このパラメータを指定しない場合、デフォルトで \\t (タブ) が使用されます。このパラメータで指定する列区切り文字は、データファイルで実際に使用されている列区切り文字と同じでなければなりません。そうでない場合、データ品質が不十分なためロードジョブは失敗します。
Files() を使用するタスクは MySQL プロトコルに従って送信されます。StarRocks と MySQL はどちらもロー ドリクエスト内の文字をエスケープします。したがって、列区切り文字がタブのような不可視文字の場合、列区切り文字の前にバックスラッシュ (\) を追加する必要があります。たとえば、列区切り文字が \t の場合は \\t を入力する必要があり、列区切り文字が \n の場合は \\n を入力する必要があります。Apache Hive™ ファイルは列区切り文字として \x01 を使用するため、データファイルが Hive からのものである場合は \\x01 を入力する必要があります。
- CSV データの場合、長さが 50 バイトを超えない UTF-8 文字列 (カンマ (,)、タブ、パイプ (|) など) をテキスト区切り文字として使用できます。
- Null 値は
\Nを使用して示されます。たとえば、データファイルが 3 列で構成されており、そのデータファイルのレコードが最初と 3 番目の列にデータを保持しているが、2 番目の列にはデータがない場合、この状況では 2 番目の列に\Nを使用して null 値を示す必要があります。これは、レコードがa,\N,bとしてコンパイルされる必要があることを意味します。a,,bはレコードの 2 番目の列が空の文字列を保持していることを示します。
csv.enclose
データファイルが CSV 形式の場合、RFC4180 に従ってフィールド値をラップするために使用される文字を指定します。タイプ: 単一バイト文字。デフォルト値: NONE。最も一般的な文字はシングルクォート (') とダブルクォート (") です。
enclose で指定された文字でラップされたすべての特殊文字 (行区切り文字や列区切り文字を含む) は通常の記号と見なされます。StarRocks は、enclose で指定された文字として任意の単一バイト文字を指定できるため、RFC4180 よりも多くのことができます。
フィールド値に enclose で指定された文字が含まれている場合、同じ文字を使用してその enclose で指定された文字をエスケープできます。たとえば、enclose を " に設定し、フィールド値が a "quoted" c の場合、このフィールド値をデータファイルに "a ""quoted"" c" として入力できます。
csv.skip_header
CSV 形式のデータでスキップするヘッダ行の数を指定します。タイプ: INTEGER。デフォルト値: 0。このプロパティはデータロードにのみサポートされています。
一部の CSV 形式のデータファイルでは、メタデータ (列名や列データ型など) を定義するためにヘッダ行が使用されます。skip_header パラメータを設定することで、StarRocks にこれらのヘッダ行をスキップさせることができます。たとえば、このパラメータを 1 に設定すると、StarRocks はデータロード中にデータファイルの最初の行をスキップします。
データファイル内のヘッダ行は、ロードステートメントで指定した行区切り文字を使用して区切られている必要があります。
csv.escape
行区切り文字、列区切り文字、エスケープ文字、および enclose で指定された文字などのさまざまな特殊文字をエスケープするために使用される文字を指定します。これらは StarRocks によって一般的な文字と見なされ、フィールド値の一部として解析されます。タイプ: 単一バイト文字。デフォルト値: NONE。最も一般的な文字はスラッシュ (\) で、SQL ステートメントではダブルスラッシュ (\\) として記述する必要があります。
escape で指定された文字は、各ペアの enclose で指定された文字の内側と外側の両方に適用されます。
例は次のとおりです。
encloseを"に設定し、escapeを\に設定すると、StarRocks は"say \"Hello world\""をsay "Hello world"に解析します。- 列区切り文字がカンマ (
,) の場合、escapeを\に設定すると、StarRocks はa, b\, cを 2 つの別々のフィールド値aとb, cに解析します。
schema_detect
v3.2 以降、FILES() は同じバッチのデータファイルの自動スキーマ検出と統合をサポートしています。StarRocks はまず、バッチ内のランダムなデータファイルの特定のデータ行をサンプリングすることによってデータのスキーマを検出します。その後、StarRocks はバッチ内のすべてのデータファイルから列を統合します。
次のパラメータを使用してサンプリングルールを構成できます。
auto_detect_sample_files: 各バッチでサンプリングするランダムなデータファイルの数。デフォルトでは、最初と最後のファイルが選択されます。範囲:[0, + ∞]。デフォルト:2。auto_detect_sample_rows: 各サンプリングされたデータファイルでスキャンするデータ行の数。範囲:[0, + ∞]。デフォルト:500。
サンプリング後、StarRocks は次のルールに従ってすべてのデータファイルから列を統合します。
- 列名またはインデックスが異なる列の場合、各列は個別の列として識別され、最終的にすべての個別の列の統合が返されます。
- 列名が同じでデータ型が異なる列の場合、それらは同じ列として識別されますが、相対的に細かい粒度レベルで一般的なデータ型を持ちます。たとえば、ファイル A の列
col1がINTで、ファイル B ではDECIMALの場合、返される列にはDOUBLEが使用されます。- すべての整数列は、全体的に粗い粒度レベルで整数型として統合されます。
- 整数列と
FLOAT型列は DECIMAL 型として統合されます。 - 文字列型は他の型を統合するために使用されます。
- 一般的に、
STRING型はすべてのデータ型を統合するために使用できます。
例 5 を参照してください。
StarRocks がすべての列を統合できない場合、エラー情報とすべてのファイルスキーマを含むスキーマエラーレポートを生成します。
単一バッチ内のすべてのデータファイルは同じファイル形式でなければなりません。
ターゲットテーブルスキーマチェックのプッシュダウン
v3.4.0 以降、システムは FILES() のスキャンステージにターゲットテーブルスキーマチェックをプッシュダウンすることをサポートしています。
FILES() のスキーマ検出は完全に厳密ではありません。たとえば、CSV ファイル内の任意の整数列は、関数がファイルを読み取るときに BIGINT 型として推測され、チェックされます。この場合、ターゲットテーブルの対応する列が TINYINT 型である場合、BIGINT 型を超える CSV データレコードはフィルタリングされず、代わりに暗黙的に NULL で埋められます。
この問題に対処するために、システムは動的 FE 設定項目 files_enable_insert_push_down_schema を導入し、ターゲットテーブルスキーマチェックを FILES() のスキャンステージにプッシュダウンするかどうかを制御します。files_enable_insert_push_down_schema を true に設定すると、ターゲットテーブルスキーマチェックに失敗したデータレコードはファイル読み取り時にフィルタリングされます。
異なるスキーマを持つファイルの統合
v3.4.0 以降、システムは異なるスキーマを持つファイルの統合をサポートし、デフォルトでは存在しない列がある場合にエラーが返されます。プロパティ fill_mismatch_column_with を null に設定することで、システムがエラーを返す代わりに存在しない列に NULL 値を割り当てることを許可できます。
fill_mismatch_column_with: 異なるスキーマを持つファイルを統合する際に存在しない列が検出された場合のシステムの動作。 有効な値:
none: 存在しない列が検出された場合、エラーが返されます。null: 存在しない列に NULL 値が割り当てられます。
たとえば、読み取るファイルが Hive テーブルの異なるパーティションからのものであり、新しいパーティションでスキーマ変更が行われた場合、新旧のパーティションを読み取る際に fill_mismatch_column_with を null に設定すると、システムは新旧のパーティションファイルのスキーマを統合し、存在しない列に NULL 値を割り当てます。
システムは Parquet および ORC ファイルのスキーマを列名に基づいて統合し、CSV ファイルのスキーマを列の位置 (順序) に基づいて統合します。
Parquet から STRUCT 型を推測
v3.4.0 以降、FILES() は Parquet ファイルから STRUCT 型データを推測することをサポートしています。
StorageCredentialParams
StarRocks がストレージシステムにアクセスするために使用する認証情報です。
StarRocks は現在、HDFS へのシンプル認証、AWS S3 および GCS への IAM ユーザー認証、Azure Blob Storage への共有キー、SAS トークン、マネージド ID、およびサービスプリンシパルを使用したアクセスをサポートしています。
HDFS
-
シンプル認証を使用して HDFS にアクセスする:
"hadoop.security.authentication" = "simple",
"username" = "xxxxxxxxxx",
"password" = "yyyyyyyyyy"キー 必須 説明 hadoop.security.authenticationいいえ 認証方法。 有効な値: simple(デフォルト)。simpleはシンプル認証を表し、認証がないことを意味します。usernameはい HDFS クラスターの NameNode にアクセスするために使用するアカウントのユーザー名。 passwordはい HDFS クラスターの NameNode にアクセスするために使用するアカウントのパスワード。 -
Kerberos 認証を使用して HDFS にアクセスする:
現在、
FILES()は HDFS との Kerberos 認証をfe/conf、be/conf、およびcn/confディレクトリに配置された設定ファイルhdfs-site.xmlを介してのみサポートしています。さらに、各 FE 設定ファイル
fe.conf、BE 設定ファイルbe.conf、および CN 設定ファイルcn.confの設定項目JAVA_OPTSに次のオプションを追加する必要があります。# Kerberos 設定ファイルが保存されているローカルパスを指定します。
-Djava.security.krb5.conf=<path_to_kerberos_conf_file>例:
JAVA_OPTS="-Xlog:gc*:${LOG_DIR}/be.gc.log.$DATE:time -XX:ErrorFile=${LOG_DIR}/hs_err_pid%p.log -Djava.security.krb5.conf=/etc/krb5.conf"また、各 FE、BE、および CN ノードで
kinitコマンドを実行して、Key Distribution Center (KDC) からチケット発行チケット (TGT) を取得する必要があります。kinit -kt <path_to_keytab_file> <principal>このコマンドを実行するには、使用するプリンシパルが HDFS クラスターへの書き込みアクセス権を持っている必要があります。さらに、認証が期限切れにならないように、このコマンドのために特定の間隔でタスクをスケジュールする crontab を設定する必要があります。
例:
# TGT を 6 時間ごとに更新します。
0 */6 * * * kinit -kt sr.keytab sr/test.starrocks.com@STARROCKS.COM > /tmp/kinit.log -
HA モードが有効な HDFS にアクセスする:
現在、
FILES()はfe/conf、be/conf、およびcn/confディレクトリに配置された設定ファイルhdfs-site.xmlを介してのみ HA モードが有効な HDFS へのアクセスをサポートしています。
AWS S3
AWS S3 をストレージシステムとして選択する場合、次のいずれかのアクションを実行します。
-
インスタンスプロファイルベースの認証方法を選択するには、
StorageCredentialParamsを次のように構成します。"aws.s3.use_instance_profile" = "true",
"aws.s3.region" = "<aws_s3_region>" -
仮想ロールベースの認証方法を選択するには、
StorageCredentialParamsを次のように構成します。"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "<iam_role_arn>",
"aws.s3.region" = "<aws_s3_region>" -
IAM ユーザーベースの認証方法を選択するには、
StorageCredentialParamsを次のように構成します。"aws.s3.use_instance_profile" = "false",
"aws.s3.access_key" = "<iam_user_access_key>",
"aws.s3.secret_key" = "<iam_user_secret_key>",
"aws.s3.region" = "<aws_s3_region>"
以下の表は、StorageCredentialParams で構成する必要があるパラメータを説明しています。
| パラメータ | 必須 | 説明 |
|---|---|---|
aws.s3.use_instance_profile | はい | 資格情報メソッドのインスタンスプロファイルと仮想ロールを有効にするかどうかを指定します。 有効な値: true および false。デフォルト値: false。 |
aws.s3.iam_role_arn | いいえ | AWS S3 バケットに対する権限を持つ IAM ロールの ARN。AWS S3 へのアクセスの資格情報メソッドとして仮想ロールを選択する場合、このパラメータを指定する必要があります。 |
aws.s3.region | はい | AWS S3 バケットが存在するリージョン。例: us-west-1。 |
aws.s3.access_key | いいえ | IAM ユーザーのアクセスキー。AWS S3 へのアクセスの資格情報メソッドとして IAM ユーザーを選択する場合、このパラメータを指定する必要があります。 |
aws.s3.secret_key | いいえ | IAM ユーザーのシークレットキー。AWS S3 へのアクセスの資格情報メソッドとして IAM ユーザーを選択する場合、このパラメータを指定する必要があります。 |
AWS S3 へのアクセスのための認証方法の選択方法や AWS IAM コンソールでのアクセス制御ポリシーの構成方法については、AWS S3 へのアクセスのための認証パラメータ を参照してください。
AWS STS リージョナルエンドポイント
AWS Security Token Service (AWS STS) は、グローバルサービスとリージョナルサービスの両方として利用可能です。
| パラメータ | 必須 | 説明 |
|---|---|---|
aws.s3.sts.region | いいえ | アクセスする AWS Security Token Service のリージョン。 |
aws.s3.sts.endpoint | いいえ | AWS Security Token Service のデフォルトエ ンドポイントをオーバーライドするために使用されます。 |
S3 以外の S3 互換ストレージでデータにアクセスするために AWS STS エンドポイントを使用する場合、aws.s3.use_instance_profile を false に設定する必要があります。
Google GCS
Google GCS をストレージシステムとして選択する場合、次のいずれかのアクションを実行します。
-
VM ベースの認証方法を選択するには、
StorageCredentialParamsを次のように構成します。"gcp.gcs.use_compute_engine_service_account" = "true"以下の表は、
StorageCredentialParamsで構成する必要があるパラメータを説明しています。パラメータ デフォルト値 値の例 説明 gcp.gcs.use_compute_engine_service_accountfalse true Compute Engine にバインドされたサービスアカウントを直接使用するかどうかを指定します。 -
サービスアカウントベースの認証方法を選択するには、
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で構成する必要があるパラメータを説明しています。パラメータ デフォルト値 値の例 説明 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 ファイル内のプライベートキー。 -
インパーソネーションベースの認証方法を選択するには、
StorageCredentialParamsを次のように構成します。-
VM インスタンスにサービスアカウントをインパーソネートさせる:
"gcp.gcs.use_compute_engine_service_account" = "true",
"gcp.gcs.impersonation_service_account" = "<assumed_google_service_account_email>"以下の表は、
StorageCredentialParamsで構成する必要があるパラメータを説明しています。パラメータ デフォルト値 値の例 説明 gcp.gcs.use_compute_engine_service_accountfalse true Compute Engine にバインドされたサービスアカウントを直接使用するかどうかを指定します。 gcp.gcs.impersonation_service_account"" "hello" インパーソネートしたいサービスアカウント。 -
サービスアカウント (メタサービスアカウントと呼ばれる) に別のサービスアカウント (データサービスアカウントと呼ばれる) をインパーソネートさせる:
"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で構成する必要があるパラメータを説明しています。パラメータ デフォルト値 値の例 説明 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" インパーソネートしたいデータサービスアカウント。
-