我尝试删除 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.”
出现此错误的原因如下:
- 向量存储不存在或您之前已将其删除。
- 知识库执行角色没有 AWS Identity and Access Management (IAM) 权限来删除存储在向量存储中的数据。
- 知识库服务角色没有操作特定数据库 API 所需的权限。
要解决此错误,请完成以下一个或多个解决方法。
解决方法
确认关联的向量存储是否存在
完成以下步骤:
- 打开 Amazon OpenSearch Service 控制台。
- 在导航窗格中,展开 Serverless(无服务器)并选择 Collections(集合)。
- 在搜索栏中,输入与知识库关联的集合。如果该集合不可用,则表明您已删除了向量存储。
将数据删除策略设置为“保留”
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
完成以下步骤:
- 打开 Amazon Bedrock 控制台。
- 在导航窗格中的 Build(构建)下,选择 Knowledge Bases(知识库)。
- 查找状态为 Delete unsuccessful(删除失败)的知识库。
- 选择该知识库对应的数据来源名称。
- 选择 Edit(编辑)。
- 展开 Advanced settings(高级设置),将 Data deletion policy(数据删除策略)设置为 Retain(保留)。
- 选择 Submit(提交)。
- 删除数据来源。
- 删除知识库。
您还可以运行 update-data-source AWS CLI 命令来更改数据来源删除策略:
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 无服务器,请更新数据访问策略,使其包含删除权限。
-
对于 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 替换为主用户。
-
对于第三方数据库,请确保您拥有删除数据所需的权限。