メインコンテンツまでスキップ

Azure Blob Storage と統合する

Zilliz Cloud では、Azure Blob Storage と統合して、バックアップファイルや監査ログを指定したコンテナにエクスポートできます。

次の図は、Zilliz Cloud と Azure Portal で必要な手順を示しています。

EFqDwDiAIhoOPXbvLBDcO7DrnJd

事前準備​

  • Zilliz Cloud を Azure Blob と統合するには、プロジェクトに対する Organization Owner または Project Admin のアクセス権が必要です。必要な権限がない場合は、Zilliz Cloud の管理者にお問い合わせください。

  • Azure Portal への管理者アクセス権を持っていること。

ステップ 1: Zilliz Cloud で統合を開始する​

1

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

2

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

3

Azure Blob Storage セクションで、+ Integration をクリックします。

Pxw7bG0keosOCDxfVdmcCC1rnBg

4

表示されるダイアログボックスで、Basic Settings を入力します。

  • Integration Name: この統合の一意の名前(例: container_for_backup)。

  • Integration Description (任意): この統合の説明(例: for backupfile export)。

  • Bucket Permission: この統合に必要なアクセスモードを選択します。

    • Read only: Zilliz Cloud がコンテナからデータを読み取ることのみを許可します。統合を外部テーブルやその他の読み取り専用のシナリオで使用する場合は、このモードを選択します。

    • Read write: Zilliz Cloud がコンテナの読み取りと書き込みを行うことを許可します。バックアップをエクスポートしたり、監査ログをコンテナに書き込んだりする場合は、このモードを選択します。

次に、Next をクリックして続行します。

ステップ 2: Azure Portal でコンテナを作成する​

1

Azure Portal にログインします。

2

検索バーに Storage accounts と入力し、そのオプションを選択します。

integrate-with-azure-blob-1

3

Storage accounts ページで、既存のストレージアカウントを選択するか、+ Create をクリックして新しいアカウントを作成します。Note: ストレージアカウントは、Zilliz Cloud クラスターと同じリージョンに存在する必要があります。

integrate-with-azure-blob-2

4

ストレージアカウントの詳細ページで、Data Storage > Containers に移動し、+ Container をクリックします。

S3Evbdfp1o5JWnxhCkEcUZktnme

5

表示されるパネルで、コンテナ名を入力します。このコンテナ名は Zilliz Cloud コンソールで必要になるため、控えておいてください。

6

Zilliz Cloud コンソール に戻り、Create Azure Blob Storage Container ステップで設定を完了します。

  • Zilliz Cloud クラスター Region: Zilliz Cloud クラスターが存在するクラウドリージョンを選択します。

  • Storage Account Name: Azure ストレージアカウント名を入力します。

  • Container Name: 作成したコンテナの名前を入力します。

次に、Next をクリックして続行します。

integrate-with-azure-blob-3

ステップ 3: アプリケーションを登録して認証情報を追加する​

1

Azure Portal に戻り、App registrations を検索して選択します。

integrate-with-azure-blob-4

2

Application registrations ページで、+ New registration をクリックします。

integrate-with-azure-blob-5

3

Register an application パネルで、アプリケーションの名前を入力し、他のフィールドはデフォルト設定のままにして、Register をクリックします。

RLaubwh94oRrLqxf8R4cd3xvnPg

4

アプリケーションの Overview ページで、Application (client) ID と Directory (tenant) ID をコピーします。これらの値は Zilliz Cloud コンソールで必要になります。

Dgwnbb77ToK38Vx8WHdcN2ylnSh

5

Zilliz Cloud コンソール に戻り、Register a New Application ステップで、コピーした Application (client) ID と Directory (tenant) ID を入力します。

また、Zilliz Cloud から提供される Cluster Issuer URL(クラスターの発行元 URL)、Service Name、Service Account Name も控えておいてください。これらの値は Azure Portal で必要になります。

6

Azure Portal のアプリケーションページに戻ります。Manage > Certificates & secrets > Federated credentials に移動し、Add credential をクリックします。

UGgmb9dKnoPlk9xtrFvcDl3Dnfd

7

Add a credential パネルで、認証情報の設定を行います。

  • Federated credential scenario: Kubernetes accessing Azure resources を選択します。

  • Cluster issuer URL: Zilliz Cloud から提供されたクラスターの発行元 URL を入力します。

  • Namespace: milvus-tool に設定します。

  • Service account name: milvus-bucket に設定します。

  • Name: 任意の名前を入力します(例: わかりやすくするために zilliz を含めます)。

  • Audience: デフォルト値を使用します。

次に、Add をクリックして認証情報を保存します。

integrate-with-azure-blob-7

8

Zilliz Cloud コンソール に戻り、Next をクリックして続行します。

ステップ 4: ストレージアカウントのロール割り当てを追加する​

1

Azure Portal で、Access Control (IAM) > + Add > Add role assignment に移動します。

integrate-with-azure-blob-6

2

Job function roles タブで、Storage Blob Delegator ロールを選択します。

BZ2lbDBZdoGylqxA0zwcsCvNnme

3

Members タブで、ロールを割り当てる登録済みのアプリケーションを選択します。

SbSgbe9tzo45z3xtKLicm64ingc

4

Review + assign タブで、Review + assign をクリックして確認します。

ステップ 5: コンテナのロール割り当てを追加する​

ステップ 1 で選択した Bucket Permission に基づいて、登録済みのアプリケーションに、対応するコンテナスコープのロールを割り当てます。

1

Azure Portal で、ステップ 2 で作成したコンテナを含むストレージアカウントに移動します。

2

Data storage の下の Containers に移動し、対象のコンテナを選択します。

3

左側のナビゲーションペインから Access Control (IAM) を選択し、+ Add > Add role assignment をクリックします。

4

Job function roles タブで、ステップ 1 で選択したアクセスモードに応じて、次のいずれかのロールを選択します。

  • ステップ 1 で Read only を選択した場合は、Storage Blob Data Reader を選択します。

  • ステップ 1 で Read write を選択した場合は、Storage Blob Data Contributor を選択します。

NsGcbvXTvojt4OxAnBGcqKNhnad

5

Members タブで、ロールを割り当てる登録済みのアプリケーションを選択します。

6

Review + assign タブで、Review + assign をクリックして確認します。

ステップ 6: 統合を検証して作成する​

1

Zilliz Cloud コンソール で、Validate Integration をクリックし、コンテナとロール割り当ての設定が有効であることを確認します。

Notes

検証は、Azure のロール割り当ての反映に時間がかかるため、完了するまでに最大で約 10 分かかる場合があります。

2

検証が成功したら、Create をクリックして統合を確定します。

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

プログラムでストレージ統合を作成する​

Zilliz Cloud コンソールでの操作に代えて、プログラムからストレージ統合を作成することもできます。

1

コンテナを作成します。

詳細については、上記の Azure Portal でコンテナを作成する または Create Container API ドキュメントを参照してください。

2

認証マテリアルを生成します。

bash
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": "az-eastus",
"bucketName": "my-container"
}'

上記のリクエストは、GCP 管理コンソールで権限とロールを作成するために必要な認証情報を生成します。

レスポンスの例は以下の通りです。

bash
{
"code": 0,
"data": {
"credential": {
"clusterIssuerUrl": "https://issuer.example.com/",
"namespace": "milvus-tool",
"serviceAccountName": "milvus-bucket"
}
}
}

パラメーターの説明の詳細については、Generate Storage Integration Authorization Materials を参照してください。

3

返された clusterIssuerUrl、namespace、serviceAccountName を使用して、アプリケーションを登録し、認証情報を追加します。

詳細については、アプリケーションを登録して認証情報を追加する を参照してください。

4

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

リクエストでは、externalCred.accountName にポータルに表示される Azure ストレージアカウント名を設定し、externalCred.clientId と externalCred.tenantId には、アプリケーションの登録時に控えた値を設定します。

bash
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": {
"accountName": "mystorageaccount",
"clientId": "00000000-0000-0000-0000-000000000000",
"tenantId": "11111111-1111-1111-1111-111111111111"
}
}'

検証が成功した場合のレスポンスは以下の通りです。

bash
{
"code": 0,
"data": {
"success": true,
"message": ""
}
}

パラメーターの説明の詳細については、Validate Storage Integration を参照してください。

5

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

このリクエストは、description が追加されている点を除き、検証リクエストとほとんどのパラメーターを共有します。

bash
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-azure",
"description": "Azure container for external tables",
"regionId": "az-eastus",
"bucketName": "my-bucket",
"externalCred": {
"accountName": "mystorageaccount",
"clientId": "00000000-0000-0000-0000-000000000000",
"tenantId": "11111111-1111-1111-1111-111111111111"
}
}'

レスポンスは以下の通りです。

bash
{
"code": 0,
"data": {
"integrationId": "integ-xxxxxxxxxxxxxxxxxxx",
"name": "analytics-azure"
}
}

パラメーターの説明の詳細については、Create Storage Integration を参照してください。

統合を管理する​

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

DN2GbaT6momqNzxZeLwc0fe2nuh

統合 ID を取得する​

RESTful API を使用して、Zilliz Cloud と統合された AWS S3 バケットのいずれかにバックアップファイルをエクスポートする必要がある場合は、View Details をクリックして統合の詳細を表示し、その統合 ID をコピーします。

または、次のコマンドを実行して統合 ID を取得することもできます。

bash
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"

レスポンスは以下の通りです。

bash
{
"code": 0,
"data": {
"storageIntegrations": [
{
"integrationId": "integ-xxxxxxxxxxxxxxxxxxx",
"name": "analytics-azure",
"status": "ACTIVE",
"message": "",
"regionId": "az-eastus",
"bucketName": "my-bucket"
}
],
"count": 1,
"currentPage": 1,
"pageSize": 10
}
}

パラメーターの説明の詳細については、List Storage Integrations を参照してください。

統合の詳細を表示する​

次のコマンドを使用して、統合の詳細を表示できます。

bash
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"

レスポンスは以下の通りです。

bash
{
"code": 0,
"data": {
"integrationId": "integ-xxxxxxxxxxxxxxxxxxx",
"name": "analytics-azure",
"description": "Azure container for external tables",
"status": "ACTIVE",
"message": "",
"regionId": "az-eastus",
"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 をクリックする代わりに、次のコマンドを使用して不要なストレージ統合を削除できます。

bash
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"

レスポンスは以下の通りです。

bash
{
"code": 0,
"data": {
"integrationId": "integ-xxxxxxxxxxxxxxxxxxx",
"name": "analytics-azure"
}
}

パラメーターの説明の詳細については、Delete Storage Integration を参照してください。

トラブルシューティング​

  • 検証エラー:

    統合の検証に失敗した場合は、次の点を確認してください。

    • Azure ストレージアカウントと Zilliz Cloud クラスターのリージョンが一致していること。

    • すべてのアプリケーション ID、テナント ID、および認証情報の詳細が正しいこと。

  • 権限の問題:

    • Zilliz Cloud と Azure Portal の両方で、必要な権限があることを確認してください。

    • ロールを構成した直後に AuthorizationPermissionMismatch または同様の権限エラーが発生した場合は、待機して再試行してください。Azure のロール割り当ての反映には最大 10 分かかることがあり、管理グループのスコープが関与するまれなケースでは、反映に最大 12 時間かかることがあります。