Skip to main content
Glama
r3-yamauchi

Amazon Bedrock Knowledge Base MCP Server

by r3-yamauchi

create_bedrock_kb_role

Create an IAM service role for Amazon Bedrock Knowledge Base with trust policies restricted to your AWS account and region.

Instructions

Amazon Bedrock Knowledge Base用のサービスロールを作成します。

このツールは、Bedrock Knowledge Baseが使用するIAMロールを作成します。 ロールには以下の信頼ポリシーが設定されます:

  • Service: bedrock.amazonaws.com

  • Condition: aws:SourceAccountとaws:SourceArnによる制限

    • aws:SourceAccount: 現在のAWSアカウントID

    • aws:SourceArn: arn:aws:bedrock:[REGION]:[ACCOUNT_ID]:knowledge-base/*

Args: role_name: 作成するIAMロールの名前(必須) 例: "BedrockKnowledgeBaseRole" 注意: ロール名はAWSアカウント内で一意である必要があります region: Knowledge Baseを作成する先のリージョン(デフォルト: "us-east-1") 例: "us-east-1", "ap-northeast-1" 注意: 信頼ポリシーのaws:SourceArnにこのリージョンが使用されます このリージョンは、Knowledge Baseを作成する際に指定するリージョンと一致させる必要があります description: ロールの説明(デフォルト: "Bedrock Knowledge Base access") max_session_duration: 最大セッション時間(秒)(デフォルト: 3600秒 = 1時間) 範囲: 3600秒(1時間)から43200秒(12時間)まで

Returns: IAMRoleCreateResponseDict: ロール作成結果 - role_name: 作成されたロール名 - role_arn: ロールのARN(arn:aws:iam::ACCOUNT_ID:role/service-role/ROLE_NAME形式) - path: ロールのパス(/service-role/) - status: 作成ステータス("created")

Raises: ValueError: role_nameが空の場合、またはmax_session_durationが無効な範囲の場合 ClientError: AWS API呼び出しが失敗した場合 例: ロール名が既に使用されている、権限がないなど

Example: # 基本的なロール作成(デフォルトリージョン) create_bedrock_kb_role("BedrockKnowledgeBaseRole")

# 特定のリージョン用のロール作成
create_bedrock_kb_role("BedrockKnowledgeBaseRole", region="ap-northeast-1")

# カスタム説明とセッション時間を指定
create_bedrock_kb_role(
    "MyBedrockRole",
    description="Custom Bedrock KB role",
    max_session_duration=7200
)

Note: - ロールは /service-role/ パスに作成されます - 信頼ポリシーには、現在のAWSアカウントIDとリージョンが自動的に設定されます - ロール作成後、適切な権限ポリシーをアタッチする必要があります - ロール名が既に使用されている場合、EntityAlreadyExistsエラーが発生します

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
role_nameYes
regionNous-east-1
descriptionNoBedrock Knowledge Base access
max_session_durationNo

Implementation Reference

  • The actual implementation of the bedrock_client.create_bedrock_kb_role method, which handles AWS API calls to create the IAM role.
    def create_bedrock_kb_role(
        self,
        role_name: str,
        region: str = "us-east-1",
        description: str = "Bedrock Knowledge Base access",
        max_session_duration: int = 3600,
    ) -> IAMRoleCreateResponseDict:
        """
        Amazon Bedrock Knowledge Base用のサービスロールを作成します。
        
        このメソッドは、Bedrock Knowledge Baseが使用するIAMロールを作成します。
        ロールには以下の信頼ポリシーが設定されます:
        - Service: bedrock.amazonaws.com
        - Condition: aws:SourceAccountとaws:SourceArnによる制限
        
        Args:
            role_name: 作成するIAMロールの名前(必須)
                例: "BedrockKnowledgeBaseRole"
            region: Knowledge Baseを作成する先のリージョン(デフォルト: "us-east-1")
                    このリージョンは、Knowledge Baseを作成する際に指定するリージョンと一致させる必要があります
            description: ロールの説明(デフォルト: "Bedrock Knowledge Base access")
            max_session_duration: 最大セッション時間(秒)(デフォルト: 3600秒 = 1時間)
        
        Returns:
            IAMRoleCreateResponseDict: ロール作成結果
                - role_name: 作成されたロール名
                - role_arn: ロールのARN(arn:aws:iam::ACCOUNT_ID:role/service-role/ROLE_NAME形式)
                - path: ロールのパス(/service-role/)
                - status: 作成ステータス("created")
        
        Raises:
            ClientError: AWS API呼び出しが失敗した場合
                例: ロール名が既に使用されている、権限がないなど
        
        Note:
            - ロール名はAWSアカウント内で一意である必要があります
            - ロールは /service-role/ パスに作成されます
            - 信頼ポリシーには、現在のAWSアカウントIDとリージョンが自動的に設定されます
        """
        import json
        from bedrock_kb_mcp_server.utils import get_aws_account_id
        
        try:
            # リージョンを使用(既定値はus-east-1)
            role_region = region
            
            # AWSアカウントIDを取得
            account_id = get_aws_account_id()
            
            # 信頼ポリシー(Trust Policy)を構築
            # Bedrockサービスがこのロールを引き受けることを許可します
            trust_policy = {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Principal": {
                            "Service": "bedrock.amazonaws.com"
                        },
                        "Action": "sts:AssumeRole",
                        "Condition": {
                            "StringEquals": {
                                "aws:SourceAccount": account_id
                            },
                            "ArnLike": {
                                "aws:SourceArn": f"arn:aws:bedrock:{role_region}:{account_id}:knowledge-base/*"
                            }
  • The MCP tool wrapper function create_bedrock_kb_role that exposes the tool to the MCP client.
    @mcp.tool()  # MCPツールとして公開
    @handle_errors  # エラーハンドリングデコレータを適用
    def create_bedrock_kb_role(
        role_name: str,
        region: str = "us-east-1",
        description: str = "Bedrock Knowledge Base access",
        max_session_duration: int = 3600,
    ) -> IAMRoleCreateResponseDict:
        """
        Amazon Bedrock Knowledge Base用のサービスロールを作成します。
        
        このツールは、Bedrock Knowledge Baseが使用するIAMロールを作成します。
        ロールには以下の信頼ポリシーが設定されます:
        - Service: bedrock.amazonaws.com
        - Condition: aws:SourceAccountとaws:SourceArnによる制限
          - aws:SourceAccount: 現在のAWSアカウントID
          - aws:SourceArn: arn:aws:bedrock:[REGION]:[ACCOUNT_ID]:knowledge-base/*
    
        Args:
            role_name: 作成するIAMロールの名前(必須)
                例: "BedrockKnowledgeBaseRole"
                注意: ロール名はAWSアカウント内で一意である必要があります
            region: Knowledge Baseを作成する先のリージョン(デフォルト: "us-east-1")
                例: "us-east-1", "ap-northeast-1"
                注意: 信頼ポリシーのaws:SourceArnにこのリージョンが使用されます
                このリージョンは、Knowledge Baseを作成する際に指定するリージョンと一致させる必要があります
            description: ロールの説明(デフォルト: "Bedrock Knowledge Base access")
            max_session_duration: 最大セッション時間(秒)(デフォルト: 3600秒 = 1時間)
                範囲: 3600秒(1時間)から43200秒(12時間)まで
    
        Returns:
            IAMRoleCreateResponseDict: ロール作成結果
                - role_name: 作成されたロール名
                - role_arn: ロールのARN(arn:aws:iam::ACCOUNT_ID:role/service-role/ROLE_NAME形式)
                - path: ロールのパス(/service-role/)
                - status: 作成ステータス("created")
        
        Raises:
            ValueError: role_nameが空の場合、またはmax_session_durationが無効な範囲の場合
            ClientError: AWS API呼び出しが失敗した場合
                例: ロール名が既に使用されている、権限がないなど
        
        Example:
            # 基本的なロール作成(デフォルトリージョン)
            create_bedrock_kb_role("BedrockKnowledgeBaseRole")
            
            # 特定のリージョン用のロール作成
            create_bedrock_kb_role("BedrockKnowledgeBaseRole", region="ap-northeast-1")
            
            # カスタム説明とセッション時間を指定
            create_bedrock_kb_role(
                "MyBedrockRole",
                description="Custom Bedrock KB role",
                max_session_duration=7200
            )
        
        Note:
            - ロールは /service-role/ パスに作成されます
            - 信頼ポリシーには、現在のAWSアカウントIDとリージョンが自動的に設定されます
            - ロール作成後、適切な権限ポリシーをアタッチする必要があります
            - ロール名が既に使用されている場合、EntityAlreadyExistsエラーが発生します
        """
        # 入力値のバリデーション(共通関数を使用)
        role_name = validate_required_string(role_name, "role_name")
        
        # ロール名の基本的なバリデーション
        # IAMロール名のルールに従う必要があります
        if len(role_name) < 1 or len(role_name) > 64:
            raise ValueError("role_name must be between 1 and 64 characters")
        
        # ロール名は英数字、ハイフン、アンダースコア、ピリオドのみ使用可能
        import re
        if not re.match(r'^[\w+=,.@-]+$', role_name):
            raise ValueError(
                "role_name must contain only alphanumeric characters, hyphens, "
                "underscores, periods, plus signs, equals signs, commas, and @ symbols"
            )
        
        # max_session_durationのバリデーション
        # IAMの制限: 3600秒(1時間)から43200秒(12時間)まで
        if max_session_duration < 3600 or max_session_duration > 43200:
            raise ValueError("max_session_duration must be between 3600 and 43200 seconds")
        
        # リージョンを正規化(前後の空白を削除、空文字列の場合はus-east-1を使用)
        region_cleaned = region.strip() if region else "us-east-1"
        
        # BedrockクライアントからIAMロールを作成
        result = bedrock_client.create_bedrock_kb_role(
            role_name=role_name,  # 前後の空白は既に削除済み
            region=region_cleaned,  # 既定値はus-east-1
            description=description,
            max_session_duration=max_session_duration,
        )
        return result

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/r3-yamauchi/bedrock-kb-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server