Amazon Bedrock ナレッジベースを削除しようとすると、「Failed to delete knowledge base」というエラーが発生します。
簡単な説明
ナレッジベースの作成時に、デフォルトの dataDeletionPolicy は Delete に設定されます。ナレッジベースに関連付けられているデータソースを削除した場合、ポリシーによりすべてのデータが削除されますが、ベクターストアは削除されません。dataDeletionPolicy を Retain に設定すると、データソースを削除した際、ポリシーはすべてのデータを保持します。
Amazon Bedrock ナレッジベースを削除する際、次のエラーが発生する場合があります。
「Failed to delete example-knowledge-base.Unable to delete data from vector store for data source with example-id.Check your vector store configurations and permissions and retry your request.If the issue persists, consider updating the dataDeletionPolicy of the data source to RETAIN and retry your request (ベクターストアからデータを削除できません。ベクターストアの構成とアクセス許可を確認し、再試行してください。問題が解決しない場合は、データソースの dataDeletionPolicy を RETAIN に更新して再試行してください)」
このエラーは、次の原因で発生します。
- ベクターストアは存在しないか、以前に削除された。
- ナレッジベースの実行ロールには、ベクターストアに保存されているデータを削除するための AWS Identity and Access Management (IAM) 権限が付与されていない。
- ナレッジベースのサービスロールには、特定のデータベース API を操作するために必要な権限が付与されていない。
このエラーを解決するには、次の 1 つ以上の手順を実行します。
解決策
関連するベクターストアが存在することを確認する
次の手順を実行します。
- Amazon OpenSearch Service コンソール を開きます。
- ナビゲーションペインで [サーバーレス] を展開し、[コレクション] を選択します。
- ナレッジベースに関連付けられたコレクションを検索バーに入力します。コレクションが表示されない場合は、そのベクターストアは既に削除されています。
データ削除ポリシーを Retain に設定する
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
次の手順を実行します。
- Amazon Bedrock コンソールを開きます。
- ナビゲーションペインの [ビルド] で [ナレッジベース] を選択します。
- ステータスが Delete unsuccessful であるナレッジベースを特定します。
- そのナレッジベースのデータソース名を選択します。
- [編集] を選択します。
- [詳細設定] を展開し、[データ削除ポリシー] を Retain に設定します。
- [送信] を選択します。
- データソースを削除します。
- ナレッジベースを削除します。
AWS CLI コマンド update-data-source を実行してデータソースの削除ポリシーを変更することもできます。
aws bedrock-agent update-data-source --region region-name --data-source-id your-data-source-id --knowledge-base-id your-knowledge-base-id --name "your-knowledge-base-name" --data-source-configuration '{"s3Configuration":{"bucketArn":"arn:aws:s3:::<S3_Bucket_Name>"},"type":"S3"}' --vector-ingestion-configuration '{"parsingConfiguration":{"bedrockFoundationModelConfiguration":{"modelArn":"arn:aws:bedrock:region: account-id:inference-profile/model_id"},"parsingStrategy":"BEDROCK_FOUNDATION_MODEL"}}' --data-deletion-policy "RETAIN"
注: 次の値を置き換えます。
- region-name: AWS リージョン
- your-data-source-id: データソース ID
- your-knowledge-base-id: ナレッジベース ID
- your-knowledge-base-name: ナレッジベース名
- region: リージョン
- account-id: AWS アカウント ID
- model_id Amazon Bedrock モデル ID
IAM ロールにデータ削除権限を付与する
アクセス許可の問題を解決するには、ベクターストアに使用しているサービスに応じて、次のいずれかの手順を実行してください。
-
Amazon OpenSearch Serverless では、削除許可を付与してデータアクセスポリシーを更新します。
-
Amazon Aurora PostgreSQL 互換エディションでは、次のいずれかの SQL コマンドを実行し、プライマリユーザーにアクセス許可を付与します。
GRANT pg_read_all_data, pg_write_all_data TO example-username;
注: example-username をプライマリユーザー名に置き換えてください。
または、
次のコードを実行します。
GRANT SELECT, DELETE ON example-schema-name. example-table-name TO example-username;
注: 実際のものでそれぞれ、example-schema-name をスキーマ名に、example-table-name をテーブル名に、example-username をプライマリユーザーに置き換えてください。
-
サードパーティのデータベースでは、データ削除に必要なアクセス許可があることを確認してください。