Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
AWS Objetivos de funciones Lambda
Los objetivos de Lambda le permiten conectar su puerta de enlace a las funciones de AWS Lambda que implementan sus herramientas. Esto resulta útil cuando desea ejecutar código personalizado en respuesta a las invocaciones de herramientas.
La función Lambda se crea mediante el servicio AWS Lambda. Para crear la función, debe hacer lo siguiente:
-
Cree un esquema de herramientas que defina las herramientas a las que puede llamar su función de Lambda.
-
Comprenda el formato de entrada de Lambda. A continuación, puede seguir los pasos de la Guía para desarrolladores de AWS Lambda para crear con el idioma que prefiera.
Después de crear la función, configure los permisos para que la puerta de enlace pueda acceder a ella.
Revise las principales consideraciones y limitaciones que le ayudarán a decidir si un objetivo de Lambda es aplicable a su caso de uso. Si lo es, 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 de Lambda, tenga en cuenta las siguientes limitaciones y consideraciones:
-
Los prefijos de los nombres de las herramientas deberán eliminarse manualmente del nombre de la herramienta en la función de Lambda. AWS Para obtener más información, consulte Comprender cómo se nombran las herramientas de AgentCore Gateway.
-
Si utiliza una función de AWS Lambda existente y la importa como herramienta a la puerta de enlace, tendrá que cambiar el código de la función para tener en cuenta un cambio de esquema en 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 se deben configurar de forma adecuada para gestionar el tiempo de procesamiento esperado de las herramientas
-
Considere la posibilidad de implementar el control de errores en su función de Lambda para enviar mensajes de error significativos al cliente
Esquema de la herramienta 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. Después de 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 destino a su puerta de enlace.
-
Pegue la definición en línea cuando añada el destino 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 la herramienta
Cuando agrega una función Lambda como destino de puerta de enlace, proporciona una configuración ToolDefinition al proporcionar el 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 campos siguientes:
-
nombre (obligatorio): el nombre de la herramienta.
-
descripción (obligatorio): una descripción de la herramienta y su propósito y uso.
-
inputSchema (obligatorio): un 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.
inputSchemaTanto el campo como el outputSchema campo se asignan a un tipo de objeto SchemaDefinition, que se describe en la siguiente sección.
Definición de esquema de nivel superior para esquemas de entrada y salida
inputSchemaTanto outputSchema los campos como los del nivel superior de la definición de la herramienta se asignan a un tipo de objeto SchemaDefinition que contiene los siguientes campos:
{ "type": "object", "description": "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }
-
tipo (obligatorio): debe ser.
object -
descripción (opcional): una descripción del esquema y su propósito y uso.
-
propiedades (opcional): un 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 SchemaDefinition objeto que define la propiedad.
-
obligatorio (opcional): una 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 diferentes 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 SchemaDefinition objeto que tiene requisitos ligeramente diferentes a los de la definición del esquema de nivel superior. Los campos disponibles dependen del 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 su 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 de Lambda que escriba puede acceder a los valores de estos objetos.
Objeto de evento
Un mapa de sus valores inputSchema a properties partir de los valores devueltos por la herramienta. Por ejemplo, si el esquema de entrada contiene las propiedades keywords ycategory, el objeto de 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 objetivo 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 escribas puede acceder a las propiedades del evento y del objeto de contexto. Puede usar el siguiente código repetitivo para empezar:
# 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