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 no AWS SAM
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-
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 function-logical-id
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 Lambda com Cargo Lambda. Para saber mais, consulteConstruindo funções do Rust Lambda com Cargo Lambda em AWS SAM.
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: builder Makefile para Python3.12 (alternativa ao uso do criador agrupado)
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