AWS Objetivos de la función Lambda
Los objetivos Lambda le permiten conectar su puerta de enlace a las funciones de AWS Lambda que implementan sus herramientas. Esto resulta útil cuando se quiere ejecutar código personalizado en respuesta a las invocaciones de herramientas.
La función Lambda se crea mediante el servicio Lambda AWS . Para crear la función, debe hacer lo siguiente:
-
Cree un esquema de herramientas que defina las herramientas a las que puede llamar la función Lambda.
-
Comprenda el formato de entrada Lambda. A continuación, puede seguir los pasos de la Guía para desarrolladores de AWS Lambda para crear con el lenguaje que prefiera.
Tras crear la función, debe configurar los permisos para que la puerta de enlace pueda acceder a ella.
Revise las consideraciones y limitaciones clave para ayudarle a decidir si un objetivo Lambda es aplicable a su caso de uso. Si es así, puede crear el esquema de la herramienta y la función Lambda y, a continuación, configurar los permisos para que la puerta de enlace pueda acceder al destino. Elija un tema para obtener más información:
Temas
Consideraciones y limitaciones clave
Cuando trabaje con objetivos Lambda, tenga en cuenta las siguientes limitaciones y consideraciones:
-
Los prefijos del nombre de la herramienta deberán quitarse manualmente del nombre de la herramienta en la función Lambda AWS . Para obtener más información, consulte Cómo se nombran las herramientas de AgentCore Gateway.
-
Si utiliza una función AWS Lambda existente y la importa como una herramienta a la puerta de enlace, tendrá que cambiar el código de la función para tener en cuenta un cambio de esquema para los objetos de evento y contexto.
-
La función Lambda debe devolver una respuesta JSON válida que la puerta de enlace pueda analizar.
-
Los tiempos de espera de las funciones Lambda deben configurarse adecuadamente para gestionar el tiempo de procesamiento esperado de las herramientas.
-
Considere la posibilidad de implementar el manejo de errores en su función LLambda para proporcionar mensajes de error significativos al cliente
Esquema de herramientas de funciones Lambda
En esta sección se explica la estructura del esquema de herramientas que define una herramienta que la función Lambda puede devolver. Tras definir el esquema de la herramienta, puede realizar una de las siguientes acciones:
-
Cárguelo en un bucket de Amazon S3 y consulte la ubicación de S3 cuando añada el objetivo a su puerta de enlace.
-
Pegue la definición en línea cuando añada el objetivo a su puerta de enlace.
Seleccione un tema para obtener más información sobre los detalles del esquema de la herramienta o para ver ejemplos:
Temas
Definición de herramienta
Cuando agrega una función Lambda como destino de puerta de enlace, proporciona una ToolDefinitional proporcionar la configuración de destino. La estructura de la definición de la herramienta es la siguiente:
{ "name": "string", "description": "string", "inputSchema": { "type": "object", "description" "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }, "outputSchema": { "type": "object", "description" "string", "properties": { "string": SchemaDefinition }, "required": ["string"] } }
La definición de la herramienta contiene los siguientes campos:
-
nombre (obligatorio): el nombre de la herramienta.
-
descripción (obligatoria): descripción de la herramienta y su finalidad y uso.
-
inputSchema (obligatorio): objeto JSON que define la estructura de la entrada que acepta la herramienta.
-
OutputSchema (opcional): objeto JSON que define la estructura de la salida que produce la herramienta.
Ambos outputSchema campos inputSchema y se asignan a un tipo de objeto SchemaDefinition, tal como se describe en la siguiente sección.
Definición de esquema de nivel superior para esquemas de entrada y salida
Los outputSchema campos inputSchema y del nivel superior de la definición de la herramienta se asignan a un tipo de objeto SchemaDefinitionque contiene los siguientes campos:
{ "type": "object", "description": "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }
-
tipo (obligatorio): debe serlo.
object -
descripción (opcional): descripción del esquema y su propósito y uso.
-
propiedades (opcional): objeto JSON que define las propiedades o los argumentos de la herramienta. Cada clave es el nombre de una propiedad y se asigna a un SchemaDefinitionobjeto que define la propiedad.
-
obligatorio (opcional): matriz que enumera las propiedades que se requieren en el
propertiesobjeto.
Si incluye un properties campo para definir los argumentos de la herramienta, proporciona una definición de esquema para cada argumento. Los distintos tipos de definiciones de esquema se describen en la siguiente sección.
Definición del esquema de propiedades
Cada propiedad del nivel superior se SchemaDefinition asigna a un SchemaDefinitionobjeto que tiene requisitos ligeramente diferentes de los de la definición del esquema de nivel superior. Los campos disponibles dependen type de la propiedad. Para ver la forma de un tipo, seleccione una de las siguientes pestañas: SchemaDefinition
ejemplo
Si incluye otra propiedad de tipo objeto, agregará otra de forma recursiva. SchemaDefinition
Ejemplos de definiciones de herramientas Lambda
Seleccione una pestaña para ver ejemplos de definiciones de herramientas que puede incluir en la función Lambda.
ejemplo
Formato de entrada de la función Lambda
Cuando una AgentCore puerta de enlace de Amazon Bedrock invoca una función Lambda, pasa un event objeto y un context objeto a la función. El controlador de eventos Lambda que escriba puede acceder a los valores de estos objetos.
Objeto de evento
Un mapa properties de inputSchema a sus valores, tal como lo devuelve la herramienta. Por ejemplo, si el esquema de entrada contiene las propiedades keywords ycategory, el objeto del evento podría ser el siguiente:
{ "keywords": "wireless headphones", "category": "electronics" }
Objeto de contexto
Contiene los siguientes metadatos:
-
bedrockAgentCoreMessageVersion : la versión del mensaje.
-
bedrockAgentCoreAwsRequestId : el identificador de la solicitud realizada al servicio Amazon Bedrock AgentCore .
-
bedrockAgentCoreMcpMessageId : el ID del mensaje enviado al servidor MCP.
-
bedrockAgentCoreGatewayId : el ID de la puerta de enlace que se invocó.
-
bedrockAgentCoreTargetId : el ID del destino de la puerta de enlace que se invocó.
-
bedrockAgentCoreToolName: el nombre de la herramienta a la que se llamó. El nombre de la herramienta tiene el formato
${target_name}_${tool_name}.
El formato del objeto de contexto es el siguiente:
{ "bedrockAgentCoreMessageVersion": "1.0", "bedrockAgentCoreAwsRequestId": "string", "bedrockAgentCoreMcpMessageId": "string", "bedrockAgentCoreGatewayId": "string", "bedrockAgentCoreTargetId": "string", "bedrockAgentCoreToolName": "string" }
La función Lambda que escriba puede acceder a las propiedades del evento y del objeto de contexto. Para empezar, puede utilizar el siguiente código repetitivo:
# Access context properties in your Lambda function def lambda_handler(event, context): # Since the visible tool name includes the target name as a prefix, we can use this delimiter to strip the prefix delimiter = "___" # Get the tool name from the context originalToolName = context.client_context.custom['bedrockAgentCoreToolName'] toolName = originalToolName[originalToolName.index(delimiter) + len(delimiter):] # Get other context properties message_version = context.client_context.custom['bedrockAgentCoreMessageVersion'] aws_request_id = context.client_context.custom['bedrockAgentCoreAwsRequestId'] mcp_message_id = context.client_context.custom['bedrockAgentCoreMcpMessageId'] gateway_id = context.client_context.custom['bedrockAgentCoreGatewayId'] target_id = context.client_context.custom['bedrockAgentCoreTargetId'] # Process the request based on the tool name if tool_name == 'searchProducts': # Handle searchProducts tool pass elif tool_name == 'getProductDetails': # Handle getProductDetails tool pass else: # Handle unknown tool pass