Creación de funciones Lambda con tiempos de ejecución personalizados en AWS SAM - AWS Serverless Application Model

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Creación de funciones Lambda con tiempos de ejecución personalizados en AWS SAM

Puede usar el comando sam build para crear los tiempos de ejecución personalizados necesarios para la función de Lambda. Para declarar que la función de Lambda utilizará un tiempo de ejecución personalizado, especifique Runtime: provided para la función.

Para crear un tiempo de ejecución personalizado, declare el atributo de recurso Metadata con una entrada BuildMethod: makefile. Proporcione el archivo Make personalizado, en el que se declara el destino de compilación del formulario build-function-logical-id que contiene los comandos de compilación para su tiempo de ejecución. El archivo Make se encarga de compilar el tiempo de ejecución personalizado, si es necesario, y de copiar los artefactos de compilación en la ubicación adecuada para los pasos posteriores del flujo de trabajo. La ubicación del archivo Make viene especificada por la propiedad CodeUri del recurso de la función y debe llamarse Makefile.

Ejemplos

Ejemplo 1: tiempo de ejecución personalizado para una función escrita en Rust

nota

Recomendamos crear funciones de Lambda con Cargo Lambda. Para obtener más información, consulte Creación de funciones de Rust Lambda con in Cargo LambdaAWS SAM.

La siguiente AWS SAM plantilla declara una función que usa un tiempo de ejecución personalizado para una función Lambda escrita en Rust e indica sam build que se ejecuten los comandos para el build-HelloRustFunction destino de compilación.

Resources: HelloRustFunction: Type: AWS::Serverless::Function Properties: FunctionName: HelloRust Handler: bootstrap.is.real.handler Runtime: provided MemorySize: 512 CodeUri: . Metadata: BuildMethod: makefile

El archivo Make siguiente contiene el destino de compilación y los comandos que se ejecutarán. Tenga en cuenta que la propiedad CodeUri está establecida en ., por lo que el archivo Make debe estar ubicado en el directorio raíz del proyecto (es decir, el mismo directorio que el archivo de plantilla de la aplicación de AWS SAM ). El nombre del archivo debe ser Makefile.

build-HelloRustFunction: cargo build --release --target x86_64-unknown-linux-musl cp ./target/x86_64-unknown-linux-musl/release/bootstrap $(ARTIFACTS_DIR)

Para obtener más información sobre cómo configurar el entorno de desarrollo para ejecutar el comando cargo build en el anterior makefile, consulte la publicación de blog Tiempo de ejecución de Rust para AWS Lambda.

Ejemplo 2: generador de archivos Makefile para Python 3.12 (alternativa al generador incluido)

Es posible que desee utilizar una biblioteca o un módulo que no esté incluido en un paquete de creación. Este ejemplo muestra una AWS SAM plantilla para un entorno de ejecución de Python 3.12 con un generador de archivos makefile.

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.12 Metadata: BuildMethod: makefile

El archivo Make siguiente contiene el destino de compilación y los comandos que se ejecutarán. Tenga en cuenta que la propiedad CodeUri está establecida en hello_world, por lo que el archivo Make debe estar ubicado en la raíz del subdirectorio hello_world y el nombre del archivo debe ser Makefile.

build-HelloWorldFunction: cp *.py $(ARTIFACTS_DIR) cp requirements.txt $(ARTIFACTS_DIR) python -m pip install -r requirements.txt -t $(ARTIFACTS_DIR) rm -rf $(ARTIFACTS_DIR)/bin