You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon Bedrock知识库创建失败:IAM权限拒绝问题求助

解决Amazon Bedrock创建知识库时的AccessDeniedException错误

问题场景

我编写了Python代码,用于基于S3存储桶文件创建Amazon Bedrock向量知识库,向量数据存储在MongoDB Atlas中。代码如下:

bedrock_client = boto3.client('bedrock-agent', region_name='us-east-2')
def create_bedrock_knowledge_base(user_id, s3_bucket, collection_name):
    print('Creating Knowledge Base')
    response = bedrock_client.create_knowledge_base(
        clientToken=f"{user_id}-token".ljust(33, '0'),
        description=f"Creating knowledge base for user {user_id}",
        knowledgeBaseConfiguration = {
            'type': 'VECTOR',
            'vectorKnowledgeBaseConfiguration': {
                'embeddingModelArn': 'arn:aws:bedrock:us-east-2:aws:model/amazon.titan-embed-text-v2:0',
                'embeddingModelConfiguration': {
                    'bedrockEmbeddingModelConfiguration': {
                        'dimensions': 1024
                    }
                }
            }
        },
        name=f"KnowledgeBase_{user_id}",
        roleArn='<iam_arn>',
        storageConfiguration = {
            'mongoDbAtlasConfiguration': {
                'collectionName': collection_name,
                'credentialsSecretArn': '<secreat_Arn>',
                'databaseName': 'bedrock',
                'endpoint': 'mongodb+srv://<username>:<pwd>@<project>.<id>.mongodb.net',
                'fieldMapping': {
                    'metadataField': 'metadata',
                    'textField': 'text',
                    'vectorField': 'embedding',
                },
                'vectorIndexName': 'vector_index',
            },
            'type': 'MONGO_DB_ATLAS',
        }
    )
    return response['knowledgeBaseArn']

执行代码时触发以下错误:

botocore.errorfactory.AccessDeniedException: An error occurred (AccessDeniedException) when calling the CreateKnowledgeBase operation: User: <iam_arn> is not authorized to perform: bedrock:CreateKnowledgeBase

已尝试过更换S3桶和模型的区域、启用Titan嵌入模型、附加AmazonBedrockFullAccess权限策略,甚至手动添加权限,但InvokeModel操作正常,仅CreateKnowledgeBase报错。

解决方案

1. 确认权限关联的IAM身份

注意:需要拥有bedrock:CreateKnowledgeBase权限的是执行代码的IAM身份(比如本地AWS配置的用户、服务器的IAM角色),而非代码中roleArn指定的Bedrock服务角色。

  • 检查执行代码的身份是否正确附加了包含bedrock:CreateKnowledgeBase的权限策略,比如手动添加以下策略:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "bedrock:CreateKnowledgeBase",
                "Resource": "*"
            }
        ]
    }
    
  • 验证权限是否生效:调用bedrock_client.list_knowledge_bases(),若同样报错则说明权限未正确配置到执行身份。

2. 检查区域支持情况

Bedrock知识库功能并非在所有AWS区域可用,us-east-2可能存在支持限制。建议切换到官方明确支持的区域(如us-east-1、us-west-2)重新测试。

3. 排查IAM权限边界限制

如果执行代码的IAM身份设置了权限边界(Permission Boundary),即使附加了AmazonBedrockFullAccess,权限边界也会限制实际可执行的操作。需确认权限边界是否允许bedrock:CreateKnowledgeBase动作。

4. 检查组织级SCP策略

若AWS账号属于AWS组织,需确认组织的服务控制策略(SCP)未限制bedrock:CreateKnowledgeBase操作。联系管理员检查SCP配置,确保该动作未被拒绝。

5. 验证客户端凭证正确性

确认boto3初始化时使用的凭证属于拥有对应权限的IAM身份:

  • 本地环境检查~/.aws/credentials和~/.aws/config配置是否正确;
  • 服务器/容器环境检查IAM角色是否正确关联,且角色拥有对应权限。

内容的提问来源于stack exchange,提问作者Nishtha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:11:17