Tutorial: criação de um função do Lambda de streaming de resposta com um URL da função
Neste tutorial, você criará uma função do Lambda definida como um arquivo .zip com um endpoint público do URL da função que retorna um fluxo de resposta. Para obter mais informações sobre a configuração de URLs de função, consulte URLs da função.
Pré-requisitos
Este tutorial presume que você tenha algum conhecimento de operações básicas do Lambda e do console do Lambda. Caso ainda não tenha feito isso, siga as instruções em Criar uma função do Lambda com o console para criar sua primeira função do Lambda.
Para concluir as etapas apresentadas a seguir, é necessário ter a versão 2 da AWS CLI. Os comandos e a saída esperada são mostrados em blocos separados:
aws --version
A seguinte saída deverá ser mostrada:
aws-cli/2.13.27 Python/3.11.6 Linux/4.14.328-248.540.amzn2.x86_64 exe/x86_64.amzn.2
Para comandos longos, um caractere de escape (\
) é usado para dividir um comando em várias linhas.
No Linux e no macOS, use seu gerenciador preferido de pacotes e de shell.
nota
No Windows, alguns comandos da CLI do Bash que você costuma usar com o Lambda (como zip
) não são compatíveis com os terminais integrados do sistema operacional. Para obter uma versão do Ubuntu com o Bash integrada no Windows, instale o Subsistema do Windows para Linux
Criar uma função de execução
Crie a função de execução que dá à sua função do Lambda permissão para acessar recursos da AWS.
Para criar uma função de execução
-
Abra a página Roles
(Funções) no console do AWS Identity and Access Management (IAM). -
Selecione Criar função.
-
Crie uma função com as seguintes propriedades:
-
Tipo de entidade confiável: serviço da AWS
-
Caso de uso: Lambda
-
Permissões: AWSLambdaBasicExecutionRole
-
Role name (Nome da função):
response-streaming-role
-
A política AWSLambdaBasicExecutionRole tem as permissões de que a função necessita para gravar logs no Amazon CloudWatch Logs. Após criar o perfil, anote seu nome do recurso da Amazon (ARN). Você precisará dele na próxima etapa.
Crie uma função de streaming de respostas (AWS CLI)
Crie uma função do Lambda de streaming resposta com um endpoint de URL da função usando a AWS Command Line Interface (AWS CLI).
Para criar uma função que possa fazer o streaming de respostas
-
Copie o exemplo de código a seguir em um arquivo com o nome
index.mjs
.import util from 'util'; import stream from 'stream'; const { Readable } = stream; const pipeline = util.promisify(stream.pipeline); /* global awslambda */ export const handler = awslambda.streamifyResponse(async (event, responseStream, _context) => { const requestStream = Readable.from(Buffer.from(JSON.stringify(event))); await pipeline(requestStream, responseStream); });
-
Crie um pacote de implantação.
zip function.zip index.mjs
-
Crie uma função do Lambda com o comando
create-function
. Substitua o valor de--role
pelo ARN do perfil da etapa anterior.aws lambda create-function \ --function-name
my-streaming-function
\ --runtime nodejs16.x \ --zip-file fileb://function.zip \ --handler index.handler \ --rolearn:aws:iam::123456789012:role/response-streaming-role
Para criar um URL da função
-
Adicione uma política baseada em recurso à sua função para permitir acesso público ao URL da função. Substitua o valor de
--principal
pela sua ID da Conta da AWS.aws lambda add-permission \ --function-name my-streaming-function \ --action lambda:InvokeFunctionUrl \ --statement-id 12345 \ --principal
123456789012
\ --function-url-auth-type AWS_IAM \ --statement-id url -
Crie um endpoint de URL para a função com o comando
create-function-url-config
.aws lambda create-function-url-config \ --function-name my-streaming-function \ --auth-type AWS_IAM \ --invoke-mode RESPONSE_STREAM
Testar o endpoint de URL de função
Teste sua integração invocando sua função. É possível abrir o URL da sua função em um navegador, ou usar o curl.
curl --request GET "
<function_url>
" --user "<key:token>
" --aws-sigv4 "aws:amz:us-east-1:lambda" --no-buffer
A URL da nossa função usa o tipo de autenticação IAM_AUTH
. Isso significa que você precisa assinar solicitações com sua chave de acesso e chave secreta da AWS. No comando anterior, substitua <key:token>
pela ID da chave de acesso da AWS. Insira sua chave secreta da AWS, quando solicitada. Se você não tiver sua chave secreta da AWS, é possível usar credenciais da AWS temporárias em vez disso.
Limpe os recursos
Agora você pode excluir os recursos criados para este tutorial, a menos que queira mantê-los. Excluindo os recursos da AWS que você não está mais usando, você evita cobranças desnecessárias em sua Conta da AWS.
Para excluir a função de execução
-
Abra a página Roles
(Funções) no console do IAM. -
Selecione a função de execução que você criou.
-
Escolha Excluir.
-
Insira o nome do perfil no campo de entrada de texto e escolha Delete (Excluir).
Como excluir a função do Lambda
-
Abra a página Functions
(Funções) no console do Lambda. -
Selecione a função que você criou.
-
Escolha Ações, Excluir.
-
Digite
delete
no campo de entrada de texto e escolha Delete (Excluir).