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

调用AWS Bedrock代理时Lambda报错:BedrockRuntime无invoke_agent属性

解决AWS Lambda调用Bedrock代理时的 'invoke_agent' 属性错误

问题根源

你当前代码用了bedrock-runtime客户端,但调用Bedrock代理的invoke_agent方法属于**bedrock-agent-runtime**专属客户端——bedrock-runtime仅用于调用基础大模型,没有代理调用的相关方法。另外你手动拼接URL、构造请求体的方式也不符合boto3客户端的调用规范。

修改后的代码

import json
import boto3

# 初始化Bedrock Agent Runtime客户端
bedrock_agent_client = boto3.client("bedrock-agent-runtime")  

def lambda_handler(event, context):
    # 从事件中提取参数
    agent_id = event.get('agentId')
    agent_alias_id = event.get('agentAliasId')
    session_id = event.get('sessionId')
    input_text = event.get('inputText', '')
    enable_trace = event.get('enableTrace', False)
    end_session = event.get('endSession', False)
    session_state = event.get('sessionState', {})
    
    try:
        # 调用Bedrock代理
        response = bedrock_agent_client.invoke_agent(
            agentId=agent_id,
            agentAliasId=agent_alias_id,
            sessionId=session_id,
            inputText=input_text,
            enableTrace=enable_trace,
            endSession=end_session,
            sessionState=session_state
        )
        
        # 处理流式响应(Bedrock Agent调用返回的是流式数据)
        agent_response = ""
        trace_info = {}
        attributions = {}
        
        for chunk in response['completion']:
            if 'chunk' in chunk:
                agent_response += chunk['chunk']['bytes'].decode('utf-8')
            if 'trace' in chunk:
                trace_info = chunk['trace']
            if 'attribution' in chunk:
                attributions = chunk['attribution']

        # 返回处理后的结果
        return {
            'statusCode': 200,
            'body': json.dumps({
                'agentResponse': agent_response,
                'traceInfo': trace_info,
                'attributions': attributions
            })
        }
    
    except Exception as e:
        print(f"Error: {str(e)}")
        return {
            'statusCode': 500,
            'body': json.dumps({
                'message': '调用Bedrock代理出错',
                'error': str(e)
            })
        }

额外注意事项

  • 给Lambda的执行角色添加bedrock:InvokeAgent权限,确保具备调用代理的权限
  • 检查Lambda运行环境的boto3版本,必须是1.34.0及以上(Bedrock Agents的boto3支持从该版本开始)。如果Lambda默认版本过低,需在部署包中打包最新的boto3和botocore依赖
  • 确保传入的agentId、agentAliasId、sessionId参数与控制台中代理的信息完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:16:05