As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
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 um código personalizado em resposta às invocações de ferramentas.
Você cria uma função Lambda usando o serviço AWS Lambda. Para criar a função, você deve fazer o seguinte:
-
Crie um esquema de ferramentas que defina as ferramentas que sua função do Lambda pode chamar.
-
Entenda o formato de entrada do Lambda. Em seguida, você pode seguir as etapas do Guia do desenvolvedor do AWS Lambda para compilação 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 uma meta do 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 as 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 do Lambda, esteja ciente das seguintes limitações e considerações:
-
Os prefixos do nome da ferramenta precisarão ser removidos manualmente do nome da ferramenta na sua função do Lambda. AWS Para obter mais informações, consulte Entender 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 contabilizar 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 do Lambda 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 do 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 do Lambda como destino do gateway, você fornece uma ToolDefinition ao 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:
-
name (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 SchemaDefinition que 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.
-
propriedades (opcional) — Um objeto JSON que define as propriedades ou os argumentos da ferramenta. Cada chave é o nome de uma propriedade e é mapeada para um SchemaDefinition objeto que define a propriedade.
-
obrigatório (opcional) — Uma matriz que enumera as propriedades que são 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 SchemaDefinition objeto 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 de um tipo, selecione uma das seguintes guias: SchemaDefinition
exemplo
Se você incluir outra propriedade do tipo de objeto, adicionará outra recursivamente. SchemaDefinition
Exemplo de definições de ferramentas Lambda
Selecione uma guia para ver exemplos de definições de ferramentas que você pode incluir na sua função do Lambda.
exemplo
Formato de entrada da função Lambda
Quando um AgentCore gateway Amazon Bedrock invoca uma função do 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 seu esquema de entrada contém as propriedades keywords ecategory, o objeto de evento pode 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.
-
alicerce 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 clichê 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