如何对在 Amazon Bedrock 中创建知识库时遇到的权限错误进行故障排除?

2 分钟阅读
0

我想解决我在创建 Amazon Bedrock 知识库时遇到的权限错误。

简短描述

您必须使用服务角色在 Amazon Bedrock 中创建知识库。该服务角色为 Amazon Bedrock 提供了访问必要的 AWS 服务所需的权限。您可以使用 Amazon Bedrock 创建的服务角色或使用您创建的自定义角色

解决方法

查看以下错误以找到问题的解决方法。

Amazon Bedrock 找不到自定义角色

错误: “Not able to find/see custom service role while creating KnowledgeBase from console”(从控制台创建知识库时无法找到/查看自定义服务角色)

当自定义服务角色缺少必要的信任策略时,就会出现上述错误。

要解决错误,请将信任策略附加到服务角色。

信任策略示例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "bedrock.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "account-id"
        },
        "ArnLike": {
          "AWS:SourceArn": "arn:aws:bedrock:region:account-id:knowledge-base/*"
        }
      }
    }
  ]
}

该服务角色没有所需的 IAM 权限

错误: “User: arn:aws:sts::999999999999: assumed-role/DataScientist/user is not authorized to perform: iam:CreateRole on resource: arn:aws:iam::9999999999:role/service-role/bedrock-knowledge-base because no identity-based policy allows the iam:CreateRole action”(用户 arn:aws:sts::999999999999: assumed-role/DataScientist/user 无权对资源 arn:aws:iam::9999999999:role/service-role/bedrock-knowledge-base 执行 iam:CreateRole,因为没有基于身份的策略允许 iam:CreateRole 操作)

当您用于创建自定义角色的 AWS Identity and Access Management (IAM) 用户或角色没有 iam:CreateRole 权限时,就会发生上述错误。

要解决此问题,请将 iam:CreateRole 权限添加您的 IAM 策略中:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:AttachRolePolicy",
        "iam:CreateRole",
        "iam:PutRolePolicy",
       ],
       "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
    }
  ]
}

错误: “User: arn:aws:sts::999999999999: assumed-role/DataScientist/user is not authorized to perform: iam:PassRole on resource: arn:aws:iam::9999999999:role/service-role/bedrock-knowledge-base because no identity-based policy allows theiam:PassRole action”(用户 arn:aws:sts::999999999999: assumed-role/DataScientist/user 无权对资源 arn:aws:iam::9999999999:role/service-role/bedrock-knowledge-base 执行 iam:PassRole,因为没有基于身份的策略允许 theiam:PassRole 操作)

当 IAM 用户缺少允许 IAM 用户将角色传递给 Amazon Bedrock 的 iam:PassRole 权限时,就会出现上述错误。

要解决此问题,请将 iam:PassRole 权限添加到您的 IAM 策略中:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole",
       ],
       "Resource": "arn:aws:iam::*:role/SERVICE-ROLE-NAME"
    }
  ]
}

您收到 Bad Authorization(授权错误)或 403 Forbidden(403 禁止)错误

错误: “An error occurred (ValidationException) when calling the CreateKnowledgeBase operation: The knowledge base storage configuration provided is invalid...Bad Authorization”(调用 CreateKnowledgeBase 操作时出现错误 (ValidationException):提供的知识库存储配置无效... 授权错误)

-或-

错误: “The knowledge base storage configuration provided is invalid...Request failed: [security_exception] 403 Forbidden”(提供的知识库存储配置无效... 请求失败:[security_exception] 403 禁止访问)

在以下情况下会出现上述错误:

  • 服务角色没有 Amazon OpenSearch 无服务器集合所需的权限。
  • 集合的数据访问策略不包括“主体”部分下的服务角色。
  • Amazon Bedrock 未正确验证 AWS Secrets Manager 配置。

要解决这些问题,请确保服务角色有权访问 OpenSearch 无服务器集合。如果您在 Amazon OpenSearch 无服务器中为知识库创建了向量数据库,请将以下策略附加到 Amazon Bedrock 服务角色。该策略允许 Amazon Bedrock 访问该集合:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "aoss:APIAccessAll"
      ],
      "Resource": [
        "arn:aws:aoss:region:account-id:collection/collection-id"
      ]
    }
  ]
}

验证集合的数据访问策略是否为 Amazon Bedrock 服务角色提供了权限。此外,请确保 Amazon Bedrock 服务角色在数据访问控制策略的主体部分下列出。有关详细信息,请参阅 Amazon OpenSearch 无服务器的数据访问控制

您的向量数据库可能会使用 AWS Secrets Manager 密钥进行配置。确保 Amazon Bedrock 服务角色允许 AWS Secrets Manager 对您的账户进行身份验证,以便您访问数据库。有关详细信息,请参阅为 Amazon Bedrock 知识库创建服务角色

索引不存在

错误: “The knowledge base storage configuration provided is invalid... no such index [bedrock-knowledge-base-default-index]”(提供的知识库存储配置无效... 无此类索引 [bedrock-knowledge-base-default-index])

Amazon OpenSearch 无服务器可能需要一些时间才能在索引的所有节点或副本上分发系统更改或更新。当您在分发过程中尝试访问数据时,可能会出现上述错误。

要解决此错误,请执行以下操作:

  • 确认您使用的服务角色拥有访问 OpenSearch 无服务器集合或所选向量数据库的必要权限
  • 验证您是否可以在 OpenSearch 无服务器中显示或手动创建索引。如果您能手动创建索引,则该问题与系统的最终一致性有关。如果您无法手动创建索引,请检查您是否具有创建索引所需的权限。有关详细信息,请参阅 OpenSearch 控制面板上的示例数据集
  • 如果您拥有必要的权限但仍然遇到问题,请等待大约 5 分钟,让配置完成整个系统的更改。
AWS 官方
AWS 官方已更新 2 个月前