はじめに
Bedrock の ナレッジベース 機能を使っていて、
「S3やRDSを削除したあとに、ナレッジベースが削除できなくなった…」
という状況に陥った方へ
本記事では、削除失敗の原因と解決方法として dataDeletionPolicy
を RETAIN
に更新するアプローチを紹介します。
前提条件
この記事は以下の構成を前提としています。
- リージョン:
ap-northeast-1
(東京) - Bedrock ナレッジベース を使用
- データソースは S3(+内部的に自動作成された RDS が存在)
- 誤って S3 バケットを 先に削除してしまった
- コンソールやCLIから Knowledge Base を削除しようとしたがエラー
発生した課題
ナレッジベース をコンソールで削除しようとすると、削除失敗のままステータスが止まりました。
CLIから削除しても以下のようなエラー:
{
"status": "DELETE_UNSUCCESSFUL",
"failureReasons": [
"Unable to delete data from vector store for data source with ID XXXXXXXX. 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 に変更
Bedrockは削除時、S3やRDSなどのベクトルストアデータも削除しようとします。
ところが、S3がすでに存在しないため、削除処理が内部的に失敗。
これを回避するため、「もうデータは消さなくていい」と明示する必要があります。
それが dataDeletionPolicy: RETAIN の設定です。
① データソースの設定を確認
まずは対象のKnowledgeBase IDとDataSource IDを確認します。
aws bedrock-agent list-knowledge-bases --region ap-northeast-1
aws bedrock-agent list-data-sources
--knowledge-base-id XXXXXXXX
--region ap-northeast-1
② 現在のデータソース設定を取得
aws bedrock-agent get-data-source
--knowledge-base-id XXXXXXXX
--data-source-id XXXXXXXX
--region ap-northeast-1
これで name, bucketArn, type などが分かります。
③ dataDeletionPolicy を RETAIN に更新
以下のように CLI で上書きします:
aws bedrock-agent update-data-source
--knowledge-base-id XXXXXXXX
--data-source-id XXXXXXXX
--name "XXXXXX" # データソース名
--data-source-configuration '{
"type": "S3",
"s3Configuration": {
"bucketArn": "arn:aws:s3:::XXXXXXX" # ← 削除済みでもOK
}
}'
--data-deletion-policy RETAIN
--region ap-northeast-1
※削除されたS3バケットのARNでも設定できます。
④ 再度 Knowledge Base を削除
aws bedrock-agent delete-knowledge-base
--knowledge-base-id XXXXXXXX
--region ap-northeast-1
このコマンドが正常に受理されれば、非同期で削除処理が開始されます。
数分後、以下のコマンドで削除完了を確認
aws bedrock-agent get-knowledge-base
--knowledge-base-id XXXXXXXX
--region ap-northeast-1
An error occurred (ResourceNotFoundException)
と出れば削除完了です!