Tutorial: criar uma função do Lambda com um URL de função - AWS Lambda

Tutorial: criar uma função do Lambda com um URL de função

Neste tutorial, você criará uma função do Lambda definida como um arquivo .zip com um endpoint de URL de função público que retorna o produto de dois números. 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. Os exemplos de comandos da CLI neste guia usam a formatação Linux. Os comandos que incluem documentos JSON em linha deverão ser reformatados se você estiver usando a CLI do Windows.

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
  1. Abra a página Roles (Funções) no console do AWS Identity and Access Management (IAM).

  2. Selecione Criar função.

  3. Em Tipo de entidade confiável, selecione serviço da AWS e, em Caso de uso, selecione Lambda.

  4. Escolha Próximo.

  5. No painel Políticas de permissões, insira AWSLambdaBasicExecutionRole na caixa de pesquisa.

  6. Marque a caixa de seleção ao lado da política gerenciada pela AWS AWSLambdaBasicExecutionRole e escolha Avançar.

  7. Insira lambda-url-role em Nome do perfil e depois escolha Criar perfil.

A política AWSLambdaBasicExecutionRole tem as permissões de que a função precisa para gravar logs no Amazon CloudWatch Logs. Mais adiante neste tutorial, você precisará do nome do recurso da Amazon (ARN) do perfil para criar a função do Lambda.

Para localizar o ARN do seu perfil de execução
  1. Abra a página Roles (Funções) no console do AWS Identity and Access Management (IAM).

  2. Escolha o perfil que você acabou de criar (lambda-url-role).

  3. No painel Resumo, copie o ARN.

Criar uma função do Lambda com um URL de função (arquivo .zip)

Crie uma função do Lambda com um endpoint de URL de função usando um arquivo .zip.

Para criar a função
  1. Copie o exemplo de código a seguir em um arquivo com o nome index.js.

    exemplo index.js
    exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; };
  2. Crie um pacote de implantação.

    zip function.zip index.js
  3. Crie uma função do Lambda com o comando create-function. Certifique-se de substituir o ARN do perfil pelo ARN do seu próprio perfil de execução que você copiou anteriormente no tutorial.

    aws lambda create-function \ --function-name my-url-function \ --runtime nodejs18.x \ --zip-file fileb://function.zip \ --handler index.handler \ --role arn:aws:iam::123456789012:role/lambda-url-role
  4. Adicione uma política baseada em recurso à função concedendo permissões para acesso público ao URL da função.

    aws lambda add-permission \ --function-name my-url-function \ --action lambda:InvokeFunctionUrl \ --principal "*" \ --function-url-auth-type "NONE" \ --statement-id url
  5. 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-url-function \ --auth-type NONE

Testar o endpoint de URL de função

Invoque a função do Lambda chamando o endpoint do URL de função usando um cliente HTTP, como curl ou Postman.

curl 'https://abcdefg.lambda-url.us-east-1.on.aws/' \ -H 'Content-Type: application/json' \ -d '{"num1": "10", "num2": "10"}'

A seguinte saída deverá ser mostrada:

The product of 10 and 10 is 100

Criar uma função do Lambda com um URL de função (CloudFormation)

Você também pode criar uma função do Lambda com um endpoint de URL de função usando o tipo de AWS CloudFormation AWS::Lambda::Url.

Resources: MyUrlFunction: Type: AWS::Lambda::Function Properties: Handler: index.handler Runtime: nodejs18.x Role: arn:aws:iam::123456789012:role/lambda-url-role Code: ZipFile: | exports.handler = async (event) => { let body = JSON.parse(event.body); const product = body.num1 * body.num2; const response = { statusCode: 200, body: "The product of " + body.num1 + " and " + body.num2 + " is " + product, }; return response; }; Description: Create a function with a URL. MyUrlFunctionPermissions: Type: AWS::Lambda::Permission Properties: FunctionName: !Ref MyUrlFunction Action: lambda:InvokeFunctionUrl Principal: "*" FunctionUrlAuthType: NONE MyFunctionUrl: Type: AWS::Lambda::Url Properties: TargetFunctionArn: !Ref MyUrlFunction AuthType: NONE

Criar uma função do Lambda com um URL de função (AWS SAM)

Você também pode criar uma função do Lambda configurada com um endpoint de URL de função usando o AWS Serverless Application Model (AWS SAM).

ProductFunction: Type: AWS::Serverless::Function Properties: CodeUri: function/. Handler: index.handler Runtime: nodejs18.x AutoPublishAlias: live FunctionUrlConfig: AuthType: NONE

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
  1. Abra a página Roles (Funções) no console do IAM.

  2. Selecione a função de execução que você criou.

  3. Escolha Excluir.

  4. Insira o nome do perfil no campo de entrada de texto e escolha Delete (Excluir).

Como excluir a função do Lambda
  1. Abra a página Functions (Funções) no console do Lambda.

  2. Selecione a função que você criou.

  3. Escolha Ações, Excluir.

  4. Digite delete no campo de entrada de texto e escolha Delete (Excluir).