概要
- ClickHouse Cloud サービスロール ID (IAM) を取得します。
- ClickHouse が引き受けられる IAM ロールを AWS アカウントに作成します。
- Iceberg 固有のオブジェクトポリシーとカタログポリシーをロールにアタッチします。
- ロールベースの認証情報を使用して、Iceberg テーブル関数または IcebergS3 テーブルエンジンを使用します。
ClickHouseサービスのロール ID (ARN) を取得する
1
1. ClickHouse Cloud アカウントにログインします。
2
2. Iceberg データをクエリする ClickHouseサービスを選択します。
3
3. Settings タブに移動します。
4
4. Network security information までスクロールします。
5
5. サービスロール ID (IAM) の値をコピーします。
この ARN は、Iceberg データにアクセスする AWS IAM ロールの信頼ポリシーで必要になります。IAM AssumeRole を設定する
1
1. AWS にログインし、IAM サービスに移動します。
2
2. Roles を選択し、次に Create role を選択します。
Trusted entity type で Custom trust policy を選択し、ステップ 3 に基づいて値を入力します。3
3. 信頼ポリシーと IAM ポリシーを追加します。
{service-role-id} を、ClickHouse インスタンスの Service Role ID (IAM) に置き換えてください。読み取り/書き込みワークロードの場合、IAM ポリシーには
s3:PutObject、s3:DeleteObject、および Iceberg のメタデータを変更するアクションを含める必要があります。上記のサンプルは、控えめな読み取り専用構成です。より厳密に分離したい場合は、リクエストの送信元を ClickHouse Cloud VPC endpoints に制限してください。このオプションの詳細については、Secure S3 advanced action control を参照してください。4
4. ロールの作成を完了します。
a.Next をクリックし、権限割り当て画面でもう一度 Next をクリックします。b. 名前 (例: iceberg-role-for-clickhouse) と説明を追加します。c. タグを追加します (任意) 。d. ポリシーを確認します。e. Create role を選択します。5
5. 作成後、新しい IAM Role Arn をコピーします。
ClickHouse Cloud で Iceberg へのアクセスを設定する
オプション A: ロール ARN を使用する Iceberg テーブル関数
NOSIGN オプションとロールベースの認証情報を指定して、icebergS3 テーブル関数を使用します。ClickHouse Cloud はロールを引き受けるために STS を呼び出します。
オプション B: 永続型 Iceberg テーブルエンジン
オプション C: Glue カタログ + IcebergS3
注: Glue カタログを使用する場合は、IAM ロールに S3 と Glue の両方の読み取り/一覧表示権限があることを確認してください。
オプション D: Glue 向け DataLake Catalog
DataLake Catalog for Glue はバージョン 26.2 で提供開始予定です。
アクセスを確認する
- 簡単なクエリを実行します:
AccessDeniedやInvalidAccessKeyIdなどの IAM エラーがないか確認します。
トラブルシューティング
- ClickHouse Cloud サービスの設定でロール ARN を確認します。
- レイテンシとコストを抑えるため、バケット/オブジェクトが Iceberg クエリと同じリージョンにあることを確認します。
- Iceberg テーブルのパスが有効な Iceberg メタデータの場所 (テーブルのルート配下にある
metadata/v1/...ファイル) を指していることを確認します。 - カタログ モードでは、AWS Glue コンソールで Glue メタデータとパーティションの可視性を確認します。