标题: “更新 Lambda 配置” 权重: 60
在本节中,我们将配置 Lambda 函数以与 Bedrock 代理一起工作,方法是使用正确的代理 ID 更新其环境变量。此设置对于编排代理正确地将请求路由到适当的专门代理至关重要。AWS Lambda 环境变量是一个键值对(类似于标签及其关联的值),用于存储 Lambda 函数在运行时可以访问的信息。
API_KEY
或 DB_HOST
。12345
(对于 API_KEY
) 或 localhost
(对于 DB_HOST
)。我们可以从 EC2 实例连接窗口执行以下命令:
检索每个专门代理的代理 ID:
# 列出所有代理并存储其 ID
export AGENTS=$(aws bedrock-agent list-agents --output json)
echo $AGENTS
# 获取单个代理 ID
export QUERY_GEN_AGENT=$(echo $AGENTS | jq -r '.agentSummaries[] | select(.agentName == "Query-Generation-Agent").agentId')
echo "QUERY_GEN_AGENT: $QUERY_GEN_AGENT"
export QUERY_CORRECTION_AGENT=$(echo $AGENTS | jq -r '.agentSummaries[] | select(.agentName == "Query-Correction-Agent").agentId')
echo "QUERY_CORRECTION_AGENT: $QUERY_CORRECTION_AGENT"
export REST_API_AGENT=$(echo $AGENTS | jq -r '.agentSummaries[] | select(.agentName == "Rest-API-Agent").agentId')
echo "REST_API_AGENT: $REST_API_AGENT"
export KB_AGENT=$(echo $AGENTS | jq -r '.agentSummaries[] | select(.agentName == "KB-Agent").agentId')
echo "KB_AGENT: $KB_AGENT"
export ORCHESTRATOR_AGENT=$(echo $AGENTS | jq -r '.agentSummaries[] | select(.agentName == "Orchestrator-Agent").agentId')
echo "ORCHESTRATOR_AGENT: $ORCHESTRATOR_AGENT"
运行以下命令以获取所需的 Lambda ARN:
# 获取堆栈信息
export STACK_DETAILS=$(aws cloudformation describe-stacks --query "Stacks[*]" --output json | jq -r '.[] | select(.Description == "Agentic AI with Bedrock Agents workshop")')
export STACK_NAME=$(echo "$STACK_DETAILS" | jq -r '.StackName')
# 获取 Lambda ARN
export DATABASE_ACTION_ARN=$(aws cloudformation describe-stacks --stack-name "$STACK_NAME" \
--query "Stacks[0].Outputs[?OutputKey=='DatabaseActionLambdaArn'].OutputValue" --output text)
echo "DATABASE_ACTION_ARN: $DATABASE_ACTION_ARN"
export ORCHESTRATOR_KB_ARN=$(aws cloudformation describe-stacks --stack-name "$STACK_NAME" \
--query "Stacks[0].Outputs[?OutputKey=='OrchestratorKBActionLambdaArn'].OutputValue" --output text)
echo "ORCHESTRATOR_KB_ARN: $ORCHESTRATOR_KB_ARN"
export ORCHESTRATOR_API_ARN=$(aws cloudformation describe-stacks --stack-name "$STACK_NAME" \
--query "Stacks[0].Outputs[?OutputKey=='OrchestratorAPIActionLambdaArn'].OutputValue" --output text)
echo "ORCHESTRATOR_API_ARN: $ORCHESTRATOR_API_ARN"
export ORCHESTRATOR_DB_ARN=$(aws cloudformation describe-stacks --stack-name "$STACK_NAME" \
--query "Stacks[0].Outputs[?OutputKey=='OrchestratorDBActionLambdaArn'].OutputValue" --output text)
echo "ORCHESTRATOR_DB_ARN: $ORCHESTRATOR_DB_ARN"
export REST_API_ARN=$(aws cloudformation describe-stacks --stack-name "$STACK_NAME" \
--query "Stacks[0].Outputs[?OutputKey=='RestAPIActionLambdaArn'].OutputValue" --output text)
echo "REST_API_ARN: $REST_API_ARN"
使用相应的代理 ID 配置每个 Lambda 函数:
# 更新数据库操作 Lambda - QUERY_CORRECTION_AGENT_ID 仅
DB_ACTION_ENV=$(aws lambda get-function-configuration --function-name $DATABASE_ACTION_ARN --query 'Environment.Variables' --output json)
DB_ACTION_ENV_UPDATED=$(echo $DB_ACTION_ENV | jq --arg new_val "$QUERY_CORRECTION_AGENT" '. + {"QUERY_CORRECTION_AGENT_ID": $new_val}')
aws lambda update-function-configuration \
--function-name $DATABASE_ACTION_ARN \
--environment "{\"Variables\": $DB_ACTION_ENV_UPDATED}" > /dev/null
# 更新编排器 KB 操作 Lambda - AGENT_ID 仅
KB_ACTION_ENV=$(aws lambda get-function-configuration --function-name $ORCHESTRATOR_KB_ARN --query 'Environment.Variables' --output json)
KB_ACTION_ENV_UPDATED=$(echo $KB_ACTION_ENV | jq --arg new_val "$KB_AGENT" '.AGENT_ID = $new_val')
aws lambda update-function-configuration \
--function-name $ORCHESTRATOR_KB_ARN \
--environment "{\"Variables\": $KB_ACTION_ENV_UPDATED}" > /dev/null
# 更新编排器 API 操作 Lambda - AGENT_ID 仅
API_ACTION_ENV=$(aws lambda get-function-configuration --function-name $ORCHESTRATOR_API_ARN --query 'Environment.Variables' --output json)
API_ACTION_ENV_UPDATED=$(echo $API_ACTION_ENV | jq --arg new_val "$REST_API_AGENT" '. + {"AGENT_ID": $new_val}')
aws lambda update-function-configuration \
--function-name $ORCHESTRATOR_API_ARN \
--environment "{\"Variables\": $API_ACTION_ENV_UPDATED}" > /dev/null
# 更新编排器数据库操作 Lambda - AGENT_ID 仅
DB_ORCH_ENV=$(aws lambda get-function-configuration --function-name $ORCHESTRATOR_DB_ARN --query 'Environment.Variables' --output json)
DB_ORCH_ENV_UPDATED=$(echo $DB_ORCH_ENV | jq --arg new_val "$QUERY_GEN_AGENT" '.AGENT_ID = $new_val')
aws lambda update-function-configuration \
--function-name $ORCHESTRATOR_DB_ARN \
--environment "{\"Variables\": $DB_ORCH_ENV_UPDATED}" > /dev/null
确认每个 Lambda 函数的环境变量设置正确:
# 检查每个 Lambda 的环境变量
for ARN in $DATABASE_ACTION_ARN $ORCHESTRATOR_KB_ARN $ORCHESTRATOR_API_ARN $ORCHESTRATOR_DB_ARN $REST_API_ARN
do
echo "正在检查 Lambda 的配置: $ARN"
aws lambda get-function-configuration --function-name $ARN --query 'Environment.Variables'
done
如果在更新过程中出现任何错误:
完成这些步骤后, 我们的 Lambda 函数将被正确配置为与其各自的 Bedrock 代理一起工作, 从而实现跨系统的查询和操作编排。