この方法では、S3 バケットへのすべてのアクセスを 1 か所 (引き受けるロールの IAM ポリシー) で管理できるため、アクセスを追加または削除するたびに各バケットポリシーを見直す必要がありません。 以下のセクションでは、この設定方法を説明します。
ClickHouseサービスの IAMロール ARN を取得する
- ClickHouse Cloud アカウントにログインします。
- インテグレーションを作成する ClickHouseサービスを選択します。
- Settings タブを選択します。
- ページ下部の Network security information セクションまでスクロールします。
- 以下に示すように、そのサービスの Service role ID (IAM) の値をコピーします。
IAM Assume Role を設定する
CloudFormation スタックを使用したデプロイ
- IAM ロール を作成および管理する権限を持つ IAM ユーザーで、Web ブラウザーから AWS アカウントにログインします。
- 次の CloudFormation URL にアクセスし、CloudFormation スタックの作成画面を開きます。
- 前の手順で取得したサービスの service role ID (IAM) を、“ClickHouse Instance Roles” という入力欄に入力 (または貼り付け) します。 service role ID は Cloud Console に表示されているものをそのまま貼り付けできます。
-
“Bucket Names” という入力欄にバケット名を入力します。バケット URL が
https://ch-docs-s3-bucket.s3.eu-central-1.amazonaws.com/clickhouseS3/の場合、バケット名はch-docs-s3-bucketです。
完全なバケット ARN ではなく、バケット名のみを入力してください。
- CloudFormation スタックを設定します。以下に、これらのパラメータに関する追加情報を示します。
- I acknowledge that AWS CloudFormation might create IAM resources with custom names. チェックボックスを選択します
- 右下にある Create stack ボタンをクリックします
- CloudFormation スタックがエラーなく完了することを確認します。
- 新しく作成した Stack を選択し、CloudFormation スタックの Outputs タブを選択します
- このインテグレーションの RoleArn 値をコピーします。これは S3 バケットにアクセスするために必要な値です。
IAM ロールを手動で作成する
- IAM ロールの作成と管理の権限を持つ IAM ユーザーで、ウェブブラウザから AWS アカウントにログインします。
- IAM サービスのコンソールに移動します
-
以下の IAM ポリシーと信頼ポリシーを使用して、新しい IAM ロールを作成します。
{ClickHouse_IAM_ARN}は、ClickHouse インスタンスに属する IAM ロールの ARN に置き換えてください。
- 作成後、新しいIAM Role Arnをコピーします。これは、S3 バケットにアクセスするために必要です。
ClickHouseAccessロールでS3バケットにアクセスする
extra_credentials を指定できます。
以下は、上でコピーした新しく作成したロールを使用してクエリを実行する例です。
role_session_name を共有シークレットとして使用してバケット内のデータをクエリする例です。
role_session_name が正しくない場合、この操作は失敗します。
データ転送コストを抑えるため、ソースの S3 は ClickHouse Cloudサービス と同じリージョンに配置することを推奨します。
詳しくは、S3 の料金 を参照してください。
高度なアクション制御
aws:SourceVpce 条件を使用して、ClickHouse Cloud の VPC エンドポイントを送信元とするリクエストのみを受け付けるようにバケットポリシーを制限できます。お使いの ClickHouse Cloud リージョンの VPC エンドポイントを確認するには、ターミナルを開いて次を実行します。