Creación de Runtimes personalizados - 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 Runtimes personalizados

Puede utilizar elsam buildpara crear tiempos de ejecución personalizados necesarios para la función Lambda. Declaras que tu función Lambda utiliza un tiempo de ejecución personalizado especificandoRuntime: providedpara la función.

Para crear un tiempo de ejecución personalizado, declare laMetadataatributo de recurso con unBuildMethod: makefileentrada. Proporciona un archivo makefile personalizado, en el que declaras un destino de compilación del formulariobuild-function-logical-idque contiene los comandos de compilación del tiempo de ejecución. El archivo makefile es responsable de compilar el tiempo de ejecución personalizado si es necesario y copiar los artefactos de compilación en la ubicación adecuada necesaria para los pasos posteriores del flujo de trabajo. La ubicación del archivo makefile se especifica mediante elCodeUripropiedad del recurso de función y debe denominarseMakefile.

Ejemplos

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

Los siguientes ejemplos deAWS SAMplantilla declara una función que utiliza un tiempo de ejecución personalizado para una función Lambda escrita en Rust e indicasam buildpara ejecutar los comandos delbuild-HelloRustFunctionobjetivo de construcción.

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

El siguiente archivo makefile contiene el objetivo de compilación y los comandos que se ejecutarán. Tenga en cuenta que elCodeUrila propiedad se establece en., por lo que el archivo makefile debe ubicarse en el directorio raíz del proyecto (es decir, el mismo directorio que el de la aplicaciónAWS SAMarchivo de plantilla). El nombre del archivo debe serMakefile.

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 acerca de cómo configurar su entorno de desarrollo para ejecutar elcargo buildcomando del anteriormakefile, consulte laRuntime de Rust paraAWS Lambdaentrada de blog.

Ejemplo 2: Makefile builder para Python3.7 (alternativa al uso del generador agrupado)

Es posible que desee utilizar una biblioteca o un módulo que no esté incluido en un generador agrupado. En este ejemplo se muestra unAWS SAMplantilla para un motor de ejecución de Python3.7 con un generador de archivos makefile.

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

El siguiente archivo makefile contiene el objetivo de compilación y los comandos que se ejecutarán. Tenga en cuenta que elCodeUrila propiedad se establece enhello_world, por lo que el archivo de imagen de debe encontrarse en la raíz delhello_worldsubdirectorio, y el nombre del archivo debe serMakefile.

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