スキップしてコンテンツを表示

Amazon Bedrock でナレッジベースを作成する際の、アクセス許可エラーのトラブルシューティング方法を教えてください。

所要時間3分
0

Amazon Bedrock ナレッジベースを作成しようとすると、アクセス許可に関連するエラーが発生します。ナレッジベースを正常に設定するために、アクセス許可エラーを解決したいです。

簡単な説明

Amazon Bedrock でナレッジベースを作成するには、サービスロールを構成する必要があります。サービスロールにより、必要な AWS サービスに対する必要なアクセス許可を Amazon Bedrock に付与します。Amazon Bedrock が事前に作成したサービスロールを使用したり、必要なアクセス許可を割り当てるためのカスタムサービスロールを作成したりしてもかまいません。

解決策

IAM サービスロールが欠けている

Identity and Access Management (IAM) サービスロールには、Amazon Bedrock ナレッジベースの作成用の信頼関係ポリシーがなかった場合、次のエラーが発生します。

"Bedrock Knowledge Base was unable to assume the given role. Provide the proper permissions and retry the request"

このエラーを解決するには、IAM ポリシーに Amazon Bedrock に対する次の信頼関係ポリシーをアタッチします。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "bedrock.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

IAM アクセス許可が欠けている

Amazon Bedrock ナレッジベースの作成に使用した IAM ロールには iam:CreateRole が欠けていた場合、次のエラーが発生します。

"User: arn:aws:sts::account id:assumed-role/IAM role/IAM user is not authorized to perform: iam:CreateRole on resource: arn:aws:iam:region:account id:role/service-role/bedrock-knowledge-base because no identity-based policy allows the iam:CreateRole action"

このエラーを解決するには、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"
        }
    ]
}

注: service-role-name を実際のサービスロール名に置き換えてください。

Amazon Bedrock ナレッジベースの作成に使用した IAM ロールには、iam:PassRole 権限がなかった場合は、次のエラーが発生します。

"User: arn:aws:sts::account id:assumed-role/IAM role/IAM user is not authorized to perform: iam:PassRole on resource: arn:aws:iam:region:account id:role/service-role/bedrock-knowledge-base because no identity-based policy allows the iam:PassRole action"

このエラーを解決するには、iam:PassRole アクセス許可を IAM ポリシーに追加します。

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

注: service-role-name を実際のサービスロール名に置き換えてください。

Amazon OpenSearch Serverless コレクションに対するアクセス許可が欠けている

IAM サービスロールには Amazon OpenSearch Serverless コレクションに対する必要なアクセス許可がなかった場合は、次のエラーが発生します。

"The knowledge base storage configuration provided is invalid... Request failed: [security_exception] 403 Forbidden"

このエラーを解決するには、Amazon OpenSearch Serverless コレクションに対する必要なアクセス許可を IAM サービスロールに追加します。Amazon OpenSearch Serverless でナレッジベース用のベクトルデータベースを作成した場合は、次のポリシーをアタッチします。

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

上記のポリシーにより、コレクションへのアクセスに使用する IAM サービスロールを付与します。

Amazon OpenSearch Serverless コレクションコンソールを使用し、データアクセスポリシーが Amazon Bedrock サービスロールにアクセス許可を付与しているかどうかを確認します。さらに、Amazon Bedrock のサービスロールがデータアクセスコントロールポリシーの Principal セクションに含まれていることを確認します。

ベクトルデータベースの構成には、AWS Secrets Manager シークレットが含まれている場合があります。IAM サービスロールにより、AWS Secrets Manager がアカウントを認証し、データベースへのアクセス付与を行う許可を付与する必要があります。

エンドポイント認証が欠けている

Amazon OpenSearch Service コレクションのネットワークポリシーには、Amazon Bedrock エンドポイントのドメイン名が追加されていない場合、次のエラーが発生します。

"The knowledge base storage configuration provided is invalid... Request failed: [http_exception] server returned 401"

Amazon Bedrock にプライベートコレクションまたは仮想プライベートクラウド (VPC) エンドポイントへのアクセス許可を付与するには、エンドポイントのドメイン名をネットワークポリシーに追加します。

このエラーを解決するには、プライベートネットワークポリシーを使用してコレクションを更新します。プライベートネットワークポリシーを使用するコレクションがない場合は、作成する必要があります。詳細については、の「プライベートネットワークポリシーを使用してコレクションを作成する」セクションを参照してください (

プライベートネットワークポリシーを使用する Amazon OpenSearch Serverless コレクションを用いて、Amazon Bedrock にナレッジベースを作成する方法を教えてください」)。

注: 新しいコレクションの作成時には、[アクセスタイプ] では [プライベート] を選択します。さらに、[AWS サービスへのプライベートアクセス] を選択し、許可するサービスに bedrock.amazonaws.com を選択する必要があります。

S3 バケットに対する CORS 権限が欠けている

ナレッジベースに Amazon Simple Storage Service (Amazon S3) データソースが含まれているものの、バケットには必要なクロスオリジンリソースシェアリング (CORS) 権限が欠けている場合、次のエラーが発生します。

"The knowledge base storage configuration provided is invalid... Dependency error document status code: 404, error message: no such index [bedrock-knowledge-base-default-index]"

S3 バケットで CORS が適切に構成されていない場合、Amazon Bedrock ナレッジベースは S3 バケットに保存されているデータにアクセスできません。

このエラーを解決するには、S3 バケット内の CORS を、次の CORS 構成を使用して設定します。

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "PUT",
            "POST",
            "DELETE"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [
            "Access-Control-Allow-Origin"
        ]
    }
]

Amazon OpenSearch Serverless において、インデックスのすべてのノードまたはレプリカに変更を伝達するまでに要する時間が原因でも、このエラーが発生する可能性があります。

Amazon OpenSearch Serverless に起因する遅延の問題に対処するには、次の手順を実行します。

  • 使用するサービスロールには、OpenSearch Serverless コレクションおよび、選択したベクターデータベースにアクセスして操作するための権限が含まれることを確認します。
  • 既存のインデックスが存在するかどうか、または Amazon OpenSearch Serverless に新しいインデックスを手動で作成できるかどうかを確認します。Amazon OpenSearch ダッシュボードを使用すると手動でインデックスを作成できる場合は、エラーの原因は、システム内の最終的な整合性である可能性があります。このエラーを解決するには、システムが変更を完全に反映し、状態が安定するまで約 5 分間待機します。インデックスを手動で作成できない場合は、作成に必要な権限があることを確認してください。詳細については、「OpenSearch ダッシュボードのサンプルデータセット」を参照してください。
コメントはありません

関連するコンテンツ