Implementar funciones de Rust Lambda con archivos .zip - AWS Lambda

Implementar funciones de Rust Lambda con archivos .zip

nota

El cliente de tiempo de ejecución de Rust es un paquete experimental. Está sujeto a cambios y destinado únicamente para fines de evaluación.

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. También muestra cómo implementar el binario compilado con la AWS Command Line Interface y la CLI de AWS Serverless Application Model.

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.

  1. 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.

  2. 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
  3. 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
  4. 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 para implementar el binario compilado en Lambda. Este comando crea un rol de ejecución y luego crea la función de Lambda. Para especificar un rol de ejecución existente, utilice el indicador --iam-role.

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.

  1. Para crear el paquete de despliegue .zip, utilice el subcomando build.

    cargo lambda build --release --output-format zip
  2. Ejecute el comando create-function para implementar el paquete .zip en Lambda.

    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

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.

  1. Cree una plantilla de AWS SAM con la definición del recurso y la propiedad. En Runtime, especifique provided.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
  2. Utilice el subcomando build para compilar la función.

    cargo lambda build --release
  3. 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 para probar la función con una carga.

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.