Implantar funções do Lambda em Rust com arquivos .zip - AWS Lambda

Implantar funções do Lambda em Rust com arquivos .zip

nota

O cliente runtime do Rust é um pacote experimental. Ele está sujeito a alterações, e é destinado apenas a fins de avaliação.

Esta página descreve como compilar sua função do Rust e, em seguida, implantar o binário compilado no AWS Lambda usando o Cargo Lambda. Ela também mostra como implantar o binário compilado com a AWS Command Line Interface e a CLI do AWS Serverless Application Model.

Pré-requisitos

Criação de funções do Rust no macOS, Windows ou Linux

As etapas a seguir demonstram como criar o projeto para sua primeira função do Lambda com Rust e como compilá-lo com o Cargo Lambda.

  1. Instale o Cargo Lambda, um subcomando do Cargo, que compila as funções do Rust para o Lambda no macOS, Windows e Linux.

    Para instalar o Cargo Lambda em qualquer sistema que tenha o Python 3 instalado, use o pip:

    pip3 install cargo-lambda

    Para instalar o Cargo Lambda no macOS ou no Linux, use o Homebrew:

    brew tap cargo-lambda/cargo-lambda brew install cargo-lambda

    Para instalar o Cargo Lambda no Windows, use o Scoop:

    scoop bucket add cargo-lambda scoop install cargo-lambda/cargo-lambda

    Para outras opções, consulte Instalação na documentação do Cargo Lambda.

  2. Crie a estrutura do pacote. Esse comando cria um código de função básico em src/main.rs. É possível usar esse código para testes ou substituí-lo pelo seu.

    cargo lambda new my-function
  3. Dentro do diretório raiz do pacote, execute o subcomando build para compilar o código na sua função.

    cargo lambda build --release

    (Opcional) Se você quiser usar o AWS Graviton2 no Lambda, adicione o sinalizador --arm64 para compilar seu código para CPUs ARM.

    cargo lambda build --release --arm64
  4. Antes de implantar sua função do Rust, configure as credenciais da AWS em sua máquina.

    aws configure

Implantação do binário da função do Rust com o Cargo Lambda

Use o subcomando deploy para implantar o binário compilado no Lambda. Esse comando cria um perfil de execução e, em seguida, cria a função do Lambda. Para especificar um perfil de execução existente, use a sinalização --iam-role.

cargo lambda deploy my-function

Implantação do binário da sua função do Rust com a AWS CLI

Você também pode implantar seu binário com a AWS CLI.

  1. Use o subcomando build para compilar o pacote de implantação .zip.

    cargo lambda build --release --output-format zip
  2. Para implantar o pacote .zip no Lambda, execute o comando create-function.

    aws lambda create-function \ --function-name my-function \ --runtime provided.al2023 \ --role arn:aws:iam::111122223333:role/lambda-role \ --handler rust.handler \ --zip-file fileb://target/lambda/my-function/bootstrap.zip

Implantação do binário da sua função do Rust com a CLI do AWS SAM

Você também pode implantar seu binário com a CLI do AWS SAM.

  1. Crie um modelo do AWS SAM com a definição do recurso e da propriedade. Em Runtime, especifique provided.al2023. Esse é um runtime somente de sistema operacional. Os runtimes somente de sistema operacional são usados para implantar binários compilados e runtimes personalizados no Lambda.

    Para obter mais informações sobre a implantação das funções do Lambda usando o AWS SAM, consulte AWS::Serverless::Function no AWS Serverless Application Model Developer Guide.

    exemplo Definição de recursos e propriedades do SAM para um binário do Rust
    AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: SAM template for Rust binaries Resources: RustFunction: Type: AWS::Serverless::Function Properties: CodeUri: target/lambda/my-function/ Handler: rust.handler Runtime: provided.al2023 Outputs: RustFunction: Description: "Lambda Function ARN" Value: !GetAtt RustFunction.Arn
  2. Use o subcomando build para compilar a função.

    cargo lambda build --release
  3. Use o comando sam deploy para implantar a função no Lambda.

    sam deploy --guided

Para obter mais informações sobre como construir funções do Rust com a CLI do AWS SAM, consulte Construção de funções do Lambda do Rust com o Cargo Lambda no Guia do desenvolvedor do AWS Serverless Application Model.

Invocação da sua função do Rust com o Cargo Lambda

Use o subcomando invoke para testar sua função com uma carga.

cargo lambda invoke --remote --data-ascii '{"command": "Hello world"}' my-function

Invocação da sua função Rust com a AWS CLI

Você também pode usar a AWS CLI para invocar a função.

aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"command": "Hello world"}' /tmp/out.txt

A opção cli-binary-format será necessária se você estiver usando a AWS CLI versão 2. Para que essa seja a configuração padrão, execute aws configure set cli-binary-format raw-in-base64-out. Para obter mais informações, consulte A AWS CLI comporta opções de linha de comando globais no Guia do usuário da AWS Command Line Interface versão 2.