Implementar funciones de Rust Lambda con archivos .zip
nota
El cliente de tiempo de ejecución de Rust
En esta página se describe cómo compilar la función de Rust y luego implementar el binario compilado a AWS Lambda con Cargo Lambda
Secciones
Requisitos previos
Creación de funciones de Rust en macOS, Windows o Linux
Los siguientes pasos muestran cómo crear el proyecto para su primera función de Lambda con Rust y cómo compilarlo con Cargo Lambda
-
Instale Cargo Lambda, un subcomando de Cargo que compila las funciones de Rust para Lambda en macOS, Windows y Linux.
Para instalar Cargo Lambda en cualquier sistema que tenga instalado Python 3, use pip:
pip3 install cargo-lambda
Para instalar Cargo Lambda en macOS o Linux, use Homebrew:
brew tap cargo-lambda/cargo-lambda brew install cargo-lambda
Para instalar Cargo Lambda en Windows, use Scoop
: scoop bucket add cargo-lambda scoop install cargo-lambda/cargo-lambda
Para ver otras opciones, consulte Instalación
en la documentación de Cargo Lambda. -
Cree la estructura del paquete. Este comando crea un código de función básico en
src/main.rs
. Puede usar este código para realizar pruebas o sustituirlo por su propio código.cargo lambda new
my-function
-
Dentro del directorio raíz del paquete, ejecute el subcomando build
para compilar el código de la función. cargo lambda build --release
(Opcional) Si desea usar AWS Graviton2 en Lambda, agregue el indicador
--arm64
para compilar el código para las CPU ARM.cargo lambda build --release --arm64
-
Antes de implementar la función de Rust, configure las credenciales de AWS en su equipo.
aws configure
Implementación del binario de la función de Rust con Cargo Lambda
Utilice el subcomando deploy
cargo lambda deploy
my-function
Implementación del binario de la función de Rust con la AWS CLI
También puede implementar el binario con la AWS CLI.
-
Para crear el paquete de despliegue .zip, utilice el subcomando build
. cargo lambda build --release --output-format zip
-
Ejecute el comando create-function
para implementar el paquete .zip en Lambda. -
En
--runtime
, especifiqueprovided.al2023
. Este es un tiempo de ejecución exclusivo del sistema operativo. Los tiempos de ejecución exclusivos del sistema operativo se utilizan para implementar binarios compilados y tiempos de ejecución personalizados en Lambda. -
En
--role
, especifique el ARN del rol de ejecución.
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 -
Implementación del binario de la función de Rust con la CLI de AWS SAM
También puede implementar el binario con la CLI de AWS SAM.
-
Cree una plantilla de AWS SAM con la definición del recurso y la propiedad. En
Runtime
, especifiqueprovided.al2023
. Este es un tiempo de ejecución exclusivo del sistema operativo. Los tiempos de ejecución exclusivos del sistema operativo se utilizan para implementar binarios compilados y tiempos de ejecución personalizados en Lambda.Para obtener más información sobre la implementación de funciones de Lambda mediante AWS SAM, consulte AWS::Serverless::Function en la Guía para desarrolladores de AWS Serverless Application Model.
ejemplo Definición de recursos y propiedades de SAM para un binario de 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
-
Utilice el subcomando build
para compilar la función. cargo lambda build --release
-
Utilice el comando sam deploy para implementar la función en Lambda.
sam deploy --guided
Para obtener más información sobre cómo crear funciones de Rust con la CLI de AWS SAM, consulte Creación de funciones de Rust Lambda con Cargo Lambda en la Guía para desarrolladores de AWS Serverless Application Model.
Invocación de la función de Rust con Cargo Lambda
Use el subcomando invoke
cargo lambda invoke --remote --data-ascii '{"command": "Hello world"}'
my-function
Invocación de la función de Rust con la AWS CLI
También puede usar la AWS CLI para invocar la función.
aws lambda invoke --function-name
my-function
--cli-binary-format raw-in-base64-out --payload '{"command": "Hello world"}' /tmp/out.txt
La opción cli-binary-format es obligatoria si va a utilizar la versión 2 de la AWS CLI. Para que esta sea la configuración predeterminada, ejecute aws configure set cli-binary-format raw-in-base64-out
. Para obtener más información, consulte Opciones de la línea de comandos globales compatibles con AWS CLI en la Guía del usuario de la AWS Command Line Interface versión 2.