Google Cloud Storage との連携
Zilliz Cloud では、Google Cloud Storage と連携して、監査ログやバックアップファイルを指定したバケットにエクスポートできます。
次の図は、Zilliz Cloud と Google Admin コンソールで必要な手順を示しています。

事前準備
-
Zilliz Cloud と GCP を連携するには、プロジェクトに対する Organization Owner または Project Admin のアクセス権を持っていること。必要な権限がない場合は、Zilliz Cloud 管理者にお問い合わせください。
-
Google Admin コンソールへの管理者アクセス権を持っていること。
ステップ 1: Zilliz Cloud コンソールで連携を開始する
Zilliz Cloud コンソール にログインします。
プロジェクトページで、左側のナビゲーションペインから Integrations に移動します。
Google Cloud Storage Bucket セクションで、+ Integration をクリックします。
表示されたダイアログボックスで、Basic Settings を設定します:
-
Integration Name: この連携の一意の名前(例:
bucket_for_auditlog)。 -
Integration Description (任意): この連携の説明(例:
for auditlog export)。
次に、Next をクリックして、ステップ 2 に進みます。
ステップ 2: Google Admin コンソールでロールを作成する
Google Admin コンソール にログインします。
IAM & Admin / Roles ページに移動し、+ Create role をクリックします。
表示されたページで、ロールの設定を構成し、ロールに権限を追加します:
-
ロールの Title と ID をカスタマイズし(例:
ZillizBucketRole)、必要に応じて Description を追加します。 -
+ Add permissions をクリックし、ロールに次の最小権限を割り当てます:
-
storage.buckets.get -
storage.objects.create -
storage.objects.list -
storage.objects.get
-
Create をクリックします。
ステップ 3: Google Admin コンソールでバケットを作成する
Google Cloud Storage の Buckets ページに移動します。
+ Create をクリックします。
Create a bucket ページで、バケット情報を入力します。次の各手順の後で Continue をクリックして、次の手順に進みます:
-
Get started セクションで、バケット名の要件 を満たすグローバルに一意の名前を入力します。Zilliz Cloud コンソールでこの名前を入力する必要があるため、バケット名を控えておいてください。
-
Choose where to store your data セクションで:
-
ロケーションタイプ として Region を選択します。Multi-region または Dual-region オプションは選択しないでください。
-
次に、バケットを作成するリージョンを選択します。選択するロケーションは、Zilliz Cloud クラスターが存在するクラウドリージョンと同じである必要があります。
-
Create をクリックします。
バケットが作成されたら、Zilliz Cloud コンソール に戻り、次の操作を行います:
Add Google Cloud Storage Integration ダイアログボックスで、Step 3 - Create Google Cloud Storage Bucket に進みます。
-
Zilliz Cloud クラスターリージョン で、Zilliz Cloud クラスターのクラウドリージョンを選択します。このリージョンは、バケットを作成したリージョンと同じである必要があります。
-
Bucket Name に、作成したバケットの名前を入力します。
次に、Next をクリックします。
その後、Zilliz Cloud コンソールから Google Cloud サービスアカウントをコピーします。これは、ステップ 4 でバケットへのアクセスを許可するときに必要になります。
ステップ 4: Google Admin コンソールでバケットへのアクセスを許可する
Google Admin コンソール で、ステップ 3 で作成したバケットの詳細ページに移動します。
Permissions タブで、Grant access をクリックします。
Add principals エリアで、Zilliz Cloud コンソールから取得した Google Service Account を貼り付けます。
Assign roles エリアで、ステップ 2 で作成したロールを選択します。
Save をクリックします。
ステップ 5: 連携を検証して追加する
バケットへのアクセスを許可したら、Zilliz Cloud コンソールに戻り、次の操作を行います:
Validate Integration をクリックして、コンテナーとロールの割り当ての設定が有効であることを確認します。
検証には通常約 2 分かかりますが、場合によっては 7 分以上かかることがあります。
検証が成功したら、Add をクリックして連携を確定します。
これで、Google Cloud Storage が Zilliz Cloud と連携され、監査ログやバックアップファイルをエクスポートできるようになりました。詳細については、監査ログ または バックアップファイルのエクスポート を参照してください。
ストレージ連携をプログラムから作成する
Zilliz Cloud コンソールで操作する代わりに、ストレージ連携をプログラムから作成することもできます。
バケットを作成します。
詳細については、前述の Google Admin コンソールでバケットを作成する または Create a bucket API ドキュメントを参照してください。
認証情報を生成します。
export BASE_URL="https://api.cloud.zilliz.com"
export TOKEN="YOUR_API_KEY"
curl --request POST \
--url "${BASE_URL}/v2/storageIntegrations/authorizationMaterials" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Request-Timeout: 5" \
--header "Content-Type: application/json" \
-d '{
"projectId": "proj-xxxxxxxxxxxxxxxxxxxxxx",
"regionId": "gcp-us-central1",
"bucketName": "my-bucket"
}'
上記のリクエストは、GCP 管理コンソールで権限とロールを作成するために必要な認証情報を生成します。
応答の例は以下の通りです。
{
"code": 0,
"data": {
"permission": [
"storage.objects.get",
"storage.objects.create",
"storage.objects.list",
"storage.buckets.get"
],
"googleCloudServiceAccount": "zilliz-xxxx@vdc-dev-test.iam.gserviceaccount.com"
}
}
パラメーターの説明の詳細については、Generate Storage Integration Authorization Materials を参照してください。
返された permission と googleCloudServiceAccount を使用して、バケットを操作するための十分な権限を持つロールを作成します。
次のステップのために、作成したロールのサービスアカウントのメールアドレスを控えておきます。ロールの作成方法の詳細については、前述の Google Admin コンソールでロールを作成する を参照してください。
取得した認証情報を検証します。
リクエストで、externalCred.gcpProjectId に GCP プロジェクト ID を設定し、externalCred.serviceAccountEmail に前の手順で作成したロールのものを設定します。
curl --request POST \
--url "${BASE_URL}/v2/storageIntegrations/validate" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Request-Timeout: 5" \
--header "Content-Type: application/json" \
-d '{
"projectId": "proj-xxxxxxxxxxxxxxxxxxxxxx",
"regionId": "gcp-us-central1",
"bucketName": "my-bucket",
"externalCred": {
"gcpProjectId": "my-gcp-project",
"serviceAccountEmail": "bucket-access@my-gcp-project.iam.gserviceaccount.com"
}
}'
検証に成功した場合の応答は以下の通りです。
{
"code": 0,
"data": {
"success": true,
"message": ""
}
}
パラメーターの説明の詳細については、Validate Storage Integration を参照してください。
ストレージ連携を作成します。
このリクエストは、description が追加されている点を除き、検証リクエストとほとんどのパラメーターを共有します。
curl --request POST \
--url "${BASE_URL}/v2/storageIntegrations" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Request-Timeout: 5" \
--header "Content-Type: application/json" \
-d '{
"projectId": "proj-xxxxxxxxxxxxxxxxxxxxxx",
"name": "analytics-gcp",
"description": "GCP bucket for external tables",
"regionId": "gcp-us-central1",
"bucketName": "my-bucket",
"externalCred": {
"gcpProjectId": "my-gcp-project",
"serviceAccountEmail": "bucket-access@my-gcp-project.iam.gserviceaccount.com"
}
}'
応答は以下の通りです。
{
"code": 0,
"data": {
"integrationId": "integ-xxxxxxxxxxxxxxxxxxx",
"name": "analytics-gcp"
}
}
パラメーターの説明の詳細については、Create Storage Integration を参照してください。
連携の管理
連携を追加したら、必要に応じてその詳細を表示したり、連携を削除したりできます。

連携 ID を取得する
RESTful API を使用して、Zilliz Cloud と連携している AWS S3 バケットの 1 つにバックアップファイルをエクスポートする必要がある場合は、View Details をクリックして連携の詳細を表示し、その連携 ID をコピーします。
または、次のコマンドを実行して連携 ID を取得することもできます。
export TOKEN="YOUR_API_KEY"
curl --request GET \
--url "${BASE_URL}/v2/storageIntegrations?projectId=proj-xxxxxxxxxxxxxxxxxxxxxx" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Request-Timeout: 5" \
--header "Content-Type: application/json"
応答は以下の通りです。
{
"code": 0,
"data": {
"storageIntegrations": [
{
"integrationId": "integ-xxxxxxxxxxxxxxxxxxx",
"name": "analytics-gcp",
"status": "ACTIVE",
"message": "",
"regionId": "gcp-us-central1",
"bucketName": "my-bucket"
}
],
"count": 1,
"currentPage": 1,
"pageSize": 10
}
}
パラメーターの説明の詳細については、List Storage Integrations を参照してください。
連携の詳細を表示する
次のコマンドを使用して、連携の詳細を表示できます。
export integrationId="integ-xxxxxxxxxxxxxxxxxxx"
curl --request GET \
--url "${BASE_URL}/v2/storageIntegrations/${integrationId}" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Request-Timeout: 5" \
--header "Content-Type: application/json"
応答は以下の通りです。
{
"code": 0,
"data": {
"integrationId": "integ-xxxxxxxxxxxxxxxxxxx",
"name": "analytics-gcp",
"description": "GCP bucket for external tables",
"status": "ACTIVE",
"message": "",
"regionId": "gcp-us-central1",
"bucketName": "my-bucket",
"externalCred": {
"gcpProjectId": "my-gcp-project",
"serviceAccountEmail": "bucket-access@my-gcp-project.iam.gserviceaccount.com"
},
"createTime": "2024-07-30T16:49:50Z"
}
}
パラメーターの説明の詳細については、Describe Storage Integration を参照してください。
ストレージ連携を削除する
Zilliz Cloud コンソールで Remove をクリックする方法の代替として、次のコマンドを使用して不要なストレージ連携を削除できます。
export integrationId="integ-xxxxxxxxxxxxxxxxxxx"
curl --request DELETE \
--url "${BASE_URL}/v2/storageIntegrations/${integrationId}" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Request-Timeout: 5" \
--header "Content-Type: application/json"
応答は以下の通りです。
{
"code": 0,
"data": {
"integrationId": "integ-xxxxxxxxxxxxxxxxxxx",
"name": "analytics-gcp"
}
}
パラメーターの説明の詳細については、Delete Storage Integration を参照してください。
FAQ
検証中に「bucket region not match」エラーが発生するのはなぜですか?
このエラーは 2 つの理由で発生する可能性があります:
-
バケットの Location type として Multi-region または Dual-region を選択しています。Zilliz Cloud は単一の Region バケットのみをサポートします。
-
Location type として Region を選択していますが、選択したリージョンが Zilliz Cloud クラスターのリージョンと正確に一致していません。
たとえば、Zilliz Cloud クラスターが us-east1 にある場合、バケットは us-east1 リージョンに作成する必要があります。Multi-region の「United States」や、us-west1 のような別の Region に作成しないでください。
バケットを誤った Location type またはリージョンで作成した場合は、そのバケットを削除し、正しい単一の Region 設定で再作成します。
「403 PermissionDenied」エラーが発生するのはなぜですか?
アクセスを許可した直後に 403 PermissionDenied エラーが表示された場合は、待ってから再試行してください。GCP の権限変更は通常約 2 分以内に反映されますが、7 分以上かかることがあります。