AWS Alvos da função Lambda
Os alvos do Lambda permitem que você conecte seu gateway às funções do AWS Lambda que implementam suas ferramentas. Isso é útil quando você deseja executar código personalizado em resposta às invocações da ferramenta.
Você cria uma função Lambda usando o serviço Lambda AWS . Para criar a função, você deve fazer o seguinte:
-
Crie um esquema de ferramentas que defina as ferramentas que sua função Lambda pode chamar.
-
Entenda o formato de entrada Lambda. Em seguida, você pode seguir as etapas do Guia do desenvolvedor do AWS Lambda para criar com a linguagem de sua escolha.
Depois de criar a função, você configura as permissões para que o gateway possa acessá-la.
Analise as principais considerações e limitações para ajudá-lo a decidir se um alvo Lambda é aplicável ao seu caso de uso. Se estiver, você pode criar o esquema da ferramenta e a função Lambda e, em seguida, configurar permissões para que o gateway possa acessar o destino. Escolha um tópico para saber mais:
Tópicos
Principais considerações e limitações
Ao trabalhar com alvos Lambda, esteja ciente das seguintes limitações e considerações:
-
Os prefixos do nome da ferramenta precisarão ser retirados manualmente do nome da ferramenta em sua função AWS Lambda. Para obter mais informações, consulte Compreender como as ferramentas do AgentCore Gateway são nomeadas.
-
Se você estiver usando uma função AWS Lambda existente e importá-la como uma ferramenta para o gateway, precisará alterar o código da função para considerar uma alteração de esquema para objetos de evento e contexto.
-
A função Lambda deve retornar uma resposta JSON válida que possa ser analisada pelo gateway
-
Os tempos limite da função Lambda devem ser configurados adequadamente para lidar com o tempo de processamento esperado de suas ferramentas
-
Considere implementar o tratamento de erros em sua função LLambda para fornecer mensagens de erro significativas ao cliente
Esquema da ferramenta de função Lambda
Esta seção explica a estrutura do esquema da ferramenta que define uma ferramenta que sua função Lambda pode retornar. Depois de definir o esquema da ferramenta, você pode fazer o seguinte:
-
Faça o upload para um bucket do Amazon S3 e consulte a localização do S3 ao adicionar o destino ao seu gateway.
-
Cole a definição em linha ao adicionar o destino ao seu gateway.
Selecione um tópico para saber mais sobre os detalhes do esquema da ferramenta ou para ver exemplos:
Tópicos
Definição da ferramenta
Ao adicionar uma função Lambda como destino do gateway, você fornece um ToolDefinitionao fornecer a configuração de destino. A estrutura da definição da ferramenta é a seguinte:
{ "name": "string", "description": "string", "inputSchema": { "type": "object", "description" "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }, "outputSchema": { "type": "object", "description" "string", "properties": { "string": SchemaDefinition }, "required": ["string"] } }
A definição da ferramenta contém os seguintes campos:
-
nome (obrigatório) — O nome da ferramenta.
-
descrição (obrigatório) — Uma descrição da ferramenta e sua finalidade e uso.
-
inputSchema (obrigatório) — Um objeto JSON que define a estrutura da entrada que a ferramenta aceita.
-
outputSchema (opcional) — Um objeto JSON que define a estrutura da saída que a ferramenta produz.
Os outputSchema campos inputSchema e são mapeados para um tipo de objeto SchemaDefinition, descrito na seção a seguir.
Definição de esquema de nível superior para esquemas de entrada e saída
Os outputSchema campos inputSchema e no nível superior da definição da ferramenta são mapeados para um tipo de objeto SchemaDefinitionque contém os seguintes campos:
{ "type": "object", "description": "string", "properties": { "string": SchemaDefinition }, "required": ["string"] }
-
tipo (obrigatório) — Deve ser
object. -
descrição (opcional) — Uma descrição do esquema e sua finalidade e uso.
-
properties (opcional) — Um objeto JSON que define as propriedades ou os argumentos da ferramenta. Cada chave é o nome de uma propriedade e mapeia para um SchemaDefinitionobjeto que define a propriedade.
-
obrigatório (opcional) — Uma matriz que enumera as propriedades necessárias no objeto.
properties
Se você incluir um properties campo para definir argumentos para a ferramenta, fornecerá uma definição de esquema para cada argumento. Os diferentes tipos de definições de esquema são descritos na próxima seção.
Definição do esquema de propriedades
Cada propriedade no nível superior é SchemaDefinition mapeada para um SchemaDefinitionobjeto que tem requisitos ligeiramente diferentes da definição do esquema de nível superior. Os campos disponíveis dependem type da propriedade. Para ver a forma do SchemaDefinition para um tipo, selecione uma das seguintes guias:
exemplo
Se você incluir outra propriedade de tipo de objeto, adicionará outra recursivamente. SchemaDefinition
Exemplos de definições da ferramenta Lambda
Selecione uma guia para ver exemplos de definições de ferramentas que você pode incluir na sua função Lambda.
exemplo
Formato de entrada da função Lambda
Quando um AgentCore gateway Amazon Bedrock invoca uma função Lambda, ele passa um event objeto e um context objeto para a função. O manipulador de eventos Lambda que você escreve pode acessar valores nesses objetos.
Objeto de evento
Um mapa properties de inputSchema até seus valores, conforme retornado pela ferramenta. Por exemplo, se o esquema de entrada contiver as propriedades keywords ecategory, o objeto do evento poderá ser o seguinte:
{ "keywords": "wireless headphones", "category": "electronics" }
Objeto de contexto
Contém os seguintes metadados:
-
bedrock AgentCoreMessageVersion — A versão da mensagem.
-
bedrock AgentCoreAwsRequestId — O ID da solicitação feita ao serviço Amazon Bedrock AgentCore .
-
bedrock AgentCoreMcpMessageId — O ID da mensagem enviada ao servidor MCP.
-
bedrock AgentCoreGatewayId — O ID do gateway que foi invocado.
-
bedrock AgentCoreTargetId — O ID do destino do gateway que foi invocado.
-
bedrock AgentCoreToolName — O nome da ferramenta que foi chamada. O nome da ferramenta está no formato
${target_name}_${tool_name}.
O formato do objeto de contexto é o seguinte:
{ "bedrockAgentCoreMessageVersion": "1.0", "bedrockAgentCoreAwsRequestId": "string", "bedrockAgentCoreMcpMessageId": "string", "bedrockAgentCoreGatewayId": "string", "bedrockAgentCoreTargetId": "string", "bedrockAgentCoreToolName": "string" }
A função Lambda que você escreve pode acessar as propriedades do evento e do objeto de contexto. Você pode usar o seguinte código padronizado para começar:
# 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