Criação de funções Lambda com tempos de execução personalizados - AWS Serverless Application Model

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criação de funções Lambda com tempos de execução personalizados

Você pode usar o comando sam build para criar tempos de execução personalizados necessários para sua função do Lambda. Você declara a sua função do Lambda para usar um runtime especificando Runtime: provided para a função.

Para criar um runtime personalizado, declare o atributo do recurso Metadata com uma entrada BuildMethod: makefile. Você fornece um makefile personalizado, no qual declara um destino de construção do formulário build-function-logical-id que contém os comandos de construção para seu tempo de execução. Seu makefile é responsável por compilar o tempo de execução personalizado, se necessário, e copiar os artefatos de construção no local adequado para as etapas subsequentes do seu fluxo de trabalho. A localização do makefile é especificada pela propriedade CodeUri do recurso da função e deve ser nomeada Makefile.

Exemplos

Exemplo 1: Tempo de execução personalizado para uma função escrita em Rust

nota

Recomendamos criar funções do Lambda com Cargo Lambda. Para saber mais, consulte Construção de funções do Lambda com Cargo Lambda.

O AWS SAM modelo a seguir declara uma função que usa um tempo de execução personalizado para uma função Lambda escrita em Rust e sam build instrui a execução dos comandos para o destino de compilação. build-HelloRustFunction

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

O makefile a seguir contém o destino da compilação e os comandos que serão executados. Observe que a propriedade CodeUri está definida como ., portanto, o makefile deve estar localizado no diretório raiz do projeto (ou seja, o mesmo diretório do arquivo do modelo AWS SAM do aplicativo). O nome do arquivo deve 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 obter mais informações sobre como configurar seu ambiente de desenvolvimento para executar o comando cargo build no makefile anterior, consulte a postagem do blog Rust Runtime for AWS Lambda.

Exemplo 2: construtor de Makefile para Python3.12 (alternativa ao uso do construtor incluído)

Talvez você queira usar uma biblioteca ou módulo que não esteja incluído em um construtor empacotado. Este exemplo mostra um AWS SAM modelo para um tempo de execução do Python3.12 com um construtor de makefile.

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

O makefile a seguir contém o destino da compilação e os comandos que serão executados. Observe que a propriedade CodeUri está definida como hello_world, portanto, o makefile deve estar localizado na raiz do subdiretório hello_world e o nome do arquivo deve 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