Implantar funções do Lambda em Rust com arquivos .zip
nota
O cliente runtime do Rust
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
Seções
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
-
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. -
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
-
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
-
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
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.
-
Use o subcomando build
para compilar o pacote de implantação .zip. cargo lambda build --release --output-format zip
-
Para implantar o pacote .zip no Lambda, execute o comando create-function
. -
Em
--runtime
, especifiqueprovided.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
--role
, especifique o ARN do perfil de execução.
aws lambda create-function \ --function-name
my-function
\ --runtimeprovided.al2023
\ --rolearn: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.
-
Crie um modelo do AWS SAM com a definição do recurso e da propriedade. Em
Runtime
, especifiqueprovided.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
-
Use o subcomando build
para compilar a função. cargo lambda build --release
-
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
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.