Parte #2: criar um modelo de endpoint com o Amazon SageMaker, o AWS Lambda e o AWS API Gateway
Dominic Frei7 min read • Published Sep 18, 2024 • Updated Sep 18, 2024
Avalie esse Tutorial
Bem-vindo à parte 2 da série
Amazon SageMaker + Atlas Vector Search
. No Part 1, mostrei como configurar uma arquitetura que usa ambas as ferramentas para criar incorporações para seus dados e como usá-las para pesquisar semanticamente seus dados.Este artigo é parte de uma série de três partes:
Nesta parte da série, analisaremos o que realmente está sendo feito. chega de teoria! A parte 2 mostrará como criar o serviço REST descrito na arquitetura.
O endpoint REST servirá como o codificador que cria incorporações (vetores) que serão usados na próxima parte desta série para pesquisar seus dados semanticamente. A implantação do modelo será tratada pelo Amazon SageMaker, o serviço de ML tudo-em-um da AWS. Exporemos esse endpoint usando o AWS Lambda e o AWS API Gateway mais tarde para disponibilizá-lo para o aplicativo de servidor.
O Amazon SageMaker é uma plataforma de machine learning baseada na nuvem que permite aos desenvolvedores criar, treinar e implementar modelos de machine learning (ML) para qualquer caso de uso com infraestrutura, ferramentas e fluxos de trabalho totalmente gerenciados.
O Amazon SageMaker SaltStart ajuda você a começar a usar o machine learning de forma rápida e fácil. As soluções são totalmente personalizáveis e suportam a implantação com um clique e o ajuste fino de mais de 150 modelos populares de código aberto, como processamento de linguagem natural, detecção de objetos e modelos de classificação de imagens.
Inclui uma série de soluções populares:
- Extrair e analisar dados: extraia, processe e analise documentos automaticamente para obter uma Investigação mais precisa e uma tomada de decisão mais rápida.
- Detecção de fraudes: automatize a detecção de transações suspeitas com mais rapidez e alerta seus clientes para reduzir possíveis perdas econômicas.
- Predição de rotatividade de clientes: preveja a probabilidade de rotatividade de clientes e melhore a retenção analisando os prováveis abandonadores e realizando ações corretivas, como ofertas promocional.
- Recomendações personalizadas: ofereça experiências personalizadas e exclusivas aos clientes para melhorar a satisfação do cliente e expandir seus negócios rapidamente.
Antes de começarmos, certifique-se de escolher uma região que seja suportada para
RStudio
(mais sobre isso mais tarde) e JumpStart
. Você pode conferir ambos na página depreços do Amazon SageMaker verificando se a região desejada aparece na lista On-Demand Pricing
.Na página principal do Amazon SageMaker, você encontrará a opção para
Set up for a single user
. Isso configurará um domínio e um usuário de início rápido.
Um QuickSetupDomain é essencialmente apenas uma configuração padrão para que você possa começar a implantar modelos e experimentar o SageMaker. Você pode personalizá-lo mais tarde de acordo com suas necessidades.
A configuração inicial só precisa ser feita uma vez, mas pode levar alguns minutos. Quando terminar, o Amazon SageMaker o notificará de que o novo domínio está pronto.
O domínio Amazon SageMaker oferece suporte a ambientes de machine learning (ML) do Amazon SageMaker e contém o seguinte:
- O próprio domínio, que contém um AWS EC2 no qual os modelos serão implantados. Isso contém inerentemente uma lista de usuários autorizados e uma variedade de configurações de segurança, aplicativos, políticas e do Amazon Virtual Private Cloud (Amazon VPC).
- O
UserProfile
, que representa um único usuário em um domínio com o qual você trabalhará. - Um
shared space
, que consiste em um aplicativo JupyterServer compartilhado e um diretório compartilhado. Todos os usuários do domínio têm acesso ao mesmo espaço compartilhado. - Um
App
, que representa um aplicativo que suporta a experiência de leitura e execução dos notebooks, terminais e consoles do usuário.

Após a criação do domínio e do usuário, você pode iniciar o SageMaker Studio, que será sua plataforma para interagir com o SageMaker, seus modelos e implantações para esse usuário.
O Amazon SageMaker Studio é um ambiente de desenvolvimento integrado (IDE) baseado na Web para machine learning que permite construir, treinar, depurar, distribuir e monitorar seus modelos de machine learning.

Aqui, Go e começaremos com uma nova solução JumpStart.

Tudo o que você precisa fazer para configurar sua solução JumpStart é escolher um modelo. Para este tutorial, usaremos um modelo de incorporação chamado
All MiniLM L6 v2
da Hugging Face.
Ao escolher o modelo, clique em
Deploy
e o SageMaker deixará tudo pronto para você.
Você pode ajustar o endpoint às suas necessidades, mas para este tutorial, você pode totalmente Go os padrões.

Assim que o modelo mostrar seu status como
In service
, tudo estará pronto para ser usado.
Observe que o nome do endpoint aqui é
jumpstart-dft-hf-textembedding-all-20240117-062453
. Anote o nome do endpoint — você precisará dele na próxima etapa.Agora que o modelo está configurado e o ponto de extremidade está pronto para ser usado, podemos expô-lo para o nosso aplicativo de servidor.
Não expomos o endpoint SageMaker diretamente. Em vez disso, usaremos o Amazon Web Services API Gateway e Amazon Web Services Lambda.
Vamos começar criando a função lambda que usa o endpoint para criar incorporações.
O AWS Lambda é uma plataforma de computação sem servidor e orientada por eventos fornecida pela Amazon como parte do Amazon Web Services. Ele foi projetado para permitir que os desenvolvedores executem códigos sem provisionar ou gerenciar servidores. Ele executa o código em resposta a eventos e gerencia automaticamente os recursos de computação exigidos por esse código.
No Console principal AWS, Go para
AWS Lambda
e clique em Create function
.
Escolha
Author from scratch
, forneça um nome à sua função (sageMakerLambda
, por exemplo) e escolha o tempo de execução. Para este exemplo, estaremos executando no Python.
Quando tudo estiver configurado corretamente, crie a função.

O trecho de código a seguir pressupõe que a função lambda e o endpoint do Amazon SageMaker estejam implantados na mesma conta do AWS. Tudo o que você precisa fazer é substituir
<YOUR_ENDPOINT_NAME>
pelo nome real do endpoint da seção anterior.Observe que o
lambda_handler
retorna um código de status e um corpo. Ele está pronto para ser exposto como um endpoint para usar Amazon Web Services API Gateway.1 import json 2 import boto3 3 4 sagemaker_runtime_client = boto3.client("sagemaker-runtime") 5 6 def lambda_handler(event, context): 7 try: 8 # Extract the query parameter 'query' from the event 9 query_param = event.get('queryStringParameters', {}).get('query', '') 10 11 if query_param: 12 embedding = get_embedding(query_param) 13 return { 14 'statusCode': 200, 15 'body': json.dumps({'embedding': embedding}) 16 } 17 else: 18 return { 19 'statusCode': 400, 20 'body': json.dumps({'error': 'No query parameter provided'}) 21 } 22 23 except Exception as e: 24 return { 25 'statusCode': 500, 26 'body': json.dumps({'error': str(e)}) 27 } 28 29 def get_embedding(synopsis): 30 input_data = {"text_inputs": synopsis} 31 response = sagemaker_runtime_client.invoke_endpoint( 32 EndpointName="<YOUR_ENDPOINT_NAME>", 33 Body=json.dumps(input_data), 34 ContentType="application/json" 35 ) 36 result = json.loads(response["Body"].read().decode()) 37 embedding = result["embedding"][0] 38 return embedding
Não se esquecer de clicar em
Deploy
!
Uma última coisa que precisamos fazer antes de podermos usar essa função lambda é garantir que ela realmente tenha permissão para executar o endpoint SageMaker. Vá para a parte
Configuration
da função Lambda e depois para Permissions
. Você pode simplesmente clicar no linkRole Name
para acessar o papel associado no AWS Identity e Access Management (IAM).
No IAM, você deve escolher
Add permissions
.
Você pode escolher
Attach policies
anexar políticas pré-criadas da lista de políticas do IAM.
Por enquanto, vamos usar o
AmazonSageMakerFullAccess
, mas lembre-se de selecionar somente as permissões necessárias para seu aplicativo específico.
Agora, vamos para AWS API Gateway, clique em
Create API
e depois em Build
em REST API
.
Escolha criar uma nova API e nomeie-a. Neste exemplo, estamos chamando-o de
sageMakerApi
.
É tudo o que você precisa fazer por enquanto. O tipo de endpoint da API pode permanecer regional, supondo que você tenha criado a função Lambda na mesma região. Pressione
Create API
.
Primeiro, precisamos criar um novo recurso.

O caminho do recurso será
/
. Escolha um nome comosageMakerResource
.
Em seguida, você retornará à visão geral da API. Desta vez, clique em
Create method
. Precisamos de um método GET que se integre a uma função lambda.
Marque
Lambda proxy integration
e escolha a função lambda que você criou na seção anterior. Em seguida, crie o método.
Por fim, não se lembre de implantar a API.

Escolha um estágio. Isso influenciará o URL que precisamos usar (o API Gateway mostrará o URL completo em breve). Como ainda estamos testando,
TEST
pode ser uma boa escolha.
Este é apenas um teste para um tutorial, mas antes de implantar na produção, adicione também camadas de segurança, como chaves de API. Quando tudo estiver pronto, a aba
Resources
deverá ter a seguinte aparência.
Ao enviar requests para o API Gateway, receberemos a query como um string de query de URL. A próxima etapa é configurar o API Gateway e tell sobre isso e também sobre o que fazer com ele. Go para o seu
Resources
, click em GET
again e vá para a tab Method request
. ClickEdit
.
Na seção
URL query string parameters
, você deseja adicionar uma nova string de query dando um nome a ela. Escolhemos query
aqui. Defina como Required
, mas não em cache, e salve-o.
O novo endpoint é criado. Neste ponto, podemos pegar o URL e testá-lo via cURL para ver se essa parte funcionou bem. Você pode encontrar a URL completa (incluindo estágio e endpoint) na guia
Stages
abrindo o estágio e o endpoint e clicando em GET
. Neste exemplo, é https://4ug2td0e44.execute-api.ap-northeast-2.amazonaws.com/TEST/sageMakerResource
. Sua URL deve ser semelhante.
Usando o Amazon Cloud Shell ou qualquer outro terminal, tente executar uma solicitação cURL:
1 curl -X GET 'https://4ug2td0e44.execute-api.ap-northeast-2.amazonaws.com/TEST/sageMakerResource?query=foo'
Se tudo foi configurado corretamente, você deve obter um resultado parecido com este (a matriz contém 384 entradas no total):
1 {"embedding": [0.01623343490064144, -0.007662375457584858, 0.01860642433166504, 0.031969036906957626,................... -0.031003709882497787, 0.008777940645813942]}
Seu serviço REST de incorporações está pronto. Parabéns! Agora você pode converter seus dados em um vetor com 384 dimensões!
Na próxima e última parte do tutorial, analisaremos o uso desse endpoint para preparar vetores e executar uma pesquisa vetorial usando o MongoDB Atlas.
✅ Já tem uma conta AWS? O Atlas aceita pagamentos por uso por meio do AWS Marketplace (AWS MP) sem nenhum compromisso inicial — basta se inscrever no MongoDB Atlas por meio do AWS Marketplace.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Parte de uma série