メインコンテンツまでスキップ
バージョン: User Guides (Cloud)

Google Cloud Storage との統合

Zilliz Cloud では、Google Cloud Storage と統合して、監査ログやバックアップファイルを指定されたバケットにエクスポートできます。

以下の図は、Zilliz Cloud および Google Admin コンソールで必要な手順を示しています。

UNmxw6LdCh60Dob3j7KcHGxynkg

始める前に

  • Zilliz Cloud を GCP と統合するには、プロジェクトに対する組織オーナーまたはプロジェクト管理者のアクセス権限が必要です。必要な権限をお持ちでない場合は、Zilliz Cloud の管理者にお問い合わせください。

  • Google Admin コンソールへの管理アクセス権限があります。

ステップ 1: Zilliz Cloud コンソールで統合を開始する

1

Zilliz Cloud コンソール にログインします。

2

プロジェクトページで、左側のナビゲーションペインから統合へ移動します。

3

Google Cloud Storage バケットセクションで、+ 統合をクリックします。

4

表示されたダイアログボックスで、基本設定を入力します:

  • 統合名: この統合用の一意の名前(例:bucket_for_auditlog)。

  • 統合の説明 (オプション): この統合の説明(例:for auditlog export)。

次に、次へをクリックして ステップ 2 に進みます。

ステップ 2: Google Admin コンソールでロールを作成する

1

Google Admin コンソール にログインします。

2

IAM と管理 / ロール ページに移動し、+ ロールの作成をクリックします。

3

表示されたページで、ロールの設定を構成し、ロールに権限を追加します:

  1. ロールのタイトルIDをカスタマイズします(例:Zillizバケットロール)。必要に応じて説明も追加します。

  2. + 権限の追加をクリックし、以下の最小限の権限をロールに割り当てます:

    • storage.buckets.get

    • storage.objects.create

    • storage.objects.list

    • storage.objects.get

4

作成をクリックします。

ステップ 3: Google Admin コンソールでバケットを作成する

1

Google Cloud Storage の バケット ページに移動します。

2

+ 作成をクリックします。

3

バケットの作成ページで、バケットの情報を入力します。以下の各ステップの後、続行をクリックして次のステップに進みます:

  1. 開始セクションで、バケット名の要件 を満たすグローバルに一意の名前を入力します。後で Zilliz Cloud コンソールに入力する必要があるため、バケット名を控えておきます。

  2. データの保存場所を選択セクションで:

    1. ロケーションタイプ としてリージョンを選択します。マルチリージョンまたはデュアルリージョンオプションは選択しないでください。

    2. 次に、バケットを作成したいリージョンを選択します。選択したロケーションは、Zilliz Cloud クラスターが存在するクラウドリージョンと同じである必要があります。

4

作成をクリックします。

バケットが作成されたら、Zilliz Cloud コンソール に戻り、以下を実行します:

1

Google Cloud Storage 統合の追加ダイアログボックスで、ステップ 3 - Google Cloud Storage バケットの作成に進みます。

  1. Zilliz Cloud クラスターリージョンで、Zilliz Cloud クラスターのクラウドリージョンを選択します。このリージョンは、バケットが作成されたリージョンと同じである必要があります。

  2. バケット名に、作成したバケットの名前を入力します。

2

次に、次へをクリックします。

3

その後、Zilliz Cloud コンソールから Google Cloud サービスアカウントをコピーします。これは、ステップ 4 でバケットへのアクセス権を付与する際に必要になります。

ステップ 4: Google Admin コンソールでバケットへのアクセス権を付与する

1

Google Admin コンソール で、ステップ 3 で作成したバケットの詳細ページに移動します。

2

権限タブで、アクセス権の付与をクリックします。

3

プリンシパルの追加エリアに、Zilliz Cloud コンソールから取得したGoogle サービスアカウントを貼り付けます。

4

ロールの割り当てエリアで、ステップ 2 で作成したロールを選択します。

5

保存をクリックします。

ステップ 5: 統合の検証と追加

バケットへのアクセス権を付与したら、Zilliz Cloud コンソールに戻り、以下を実行します:

1

統合の検証をクリックして、コンテナとロールの割り当て設定が有効であることを確認します。

2

検証が成功したら、追加をクリックして統合を完了します。

これで、Google Cloud Storage が Zilliz Cloud と統合され、監査ログやバックアップファイルをエクスポートできるようになりました。詳細については、監査ログ または バックアップファイルのエクスポート を参照してください。

プログラムによるストレージ統合の作成

Zilliz Cloud コンソールを使用する代わりに、ストレージ統合をプログラムで作成することもできます。

1

バケットを作成します。

詳細については、上記の Google Admin コンソールでバケットを作成または Create a bucket API ドキュメントを参照してください。

2

認証情報を生成します。

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"
}'

上記のリクエストにより、Google Admin コンソールで権限とロールを作成するために必要な認証情報が生成されます。

レスポンス例は次のとおりです。

{
"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を参照してください。

3

返された permissiongoogleCloudServiceAccount を使用して、バケットを操作するための十分な権限を持つロールを作成します。

次のステップで使用するため、作成したロールのサービスアカウントメールアドレスを記録します。ロールの作成方法については、上記の Google Admin コンソールでロールを作成を参照してください。

4

取得した認証情報を検証します。

リクエストで、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を参照してください。

5

ストレージ統合を作成します。

このリクエストは、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を参照してください。

統合の管理

統合が追加されると、必要に応じてその詳細を表示したり、統合を削除したりできます。

FKLYbB02LoDDA9xENiYccBTun5e

統合 ID の取得

RESTful API を使用する場合は、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-s3",
"description": "GCP bucket for external tables",
"status": "ACTIVE",
"message": "",
"regionId": "gcp-us-central1",
"bucketName": "my-bucket",
"externalCred": {
"roleArn": "arn:aws:iam::123456789012:role/zilliz-bucket-role",
"externalId": "zilliz-external-AbCdEf12345678"
},
"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を参照してください。

よくある質問

検証中に「バケットリージョンが一致しません」というエラーが表示されるのはなぜですか?

このエラーは、以下の 2 つの理由で発生する可能性があります:

  1. バケットのロケーションタイプとしてマルチリージョンまたはデュアルリージョンを選択しました。Zilliz Cloud は単一のリージョンバケットのみをサポートしています。

  2. ロケーションタイプとしてリージョンを選択しましたが、選択したリージョンが Zilliz Cloud クラスターのリージョンと完全に一致していません。

例えば、Zilliz Cloud クラスターが us-east1 にある場合、バケットは us-east1 リージョンに作成する必要があります。マルチリージョンの「米国」や、us-west1 のような別のリージョンには作成しないでください。

バケットが間違ったロケーションタイプまたはリージョンで作成された場合は、それを削除し、正しい単一リージョン設定で再作成してください。