

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Creazione di funzioni Lambda con runtime personalizzati in AWS SAM
<a name="building-custom-runtimes"></a>

Puoi usare il `sam build` comando per creare i runtime personalizzati richiesti per la tua funzione Lambda. Dichiari che la tua funzione Lambda utilizzi un runtime personalizzato `Runtime: provided` specificando la funzione.

Per creare un runtime personalizzato, dichiarate l'attributo `Metadata` resource con una voce. `BuildMethod: makefile` Fornisci un makefile personalizzato, in cui dichiari un obiettivo di compilazione del modulo `build-function-logical-id` che contiene i comandi di build per il tuo runtime. Il makefile è responsabile della compilazione del runtime personalizzato, se necessario, e della copia degli elementi di compilazione nella posizione corretta richiesta per le fasi successive del flusso di lavoro. La posizione del makefile è specificata dalla `CodeUri` proprietà della risorsa della funzione e deve essere denominata. `Makefile`

## Esempi
<a name="building-custom-runtimes-examples"></a>

### Esempio 1: runtime personalizzato per una funzione scritta in Rust
<a name="building-custom-runtimes-examples-rust"></a>

**Nota**  
Consigliamo di creare funzioni Lambda con. Cargo Lambda Per ulteriori informazioni, consulta [Creazione di funzioni Rust Lambda con in Cargo Lambda AWS SAM](building-rust.md).

Il AWS SAM modello seguente dichiara una funzione che utilizza un runtime personalizzato per una funzione Lambda scritta in Rust e `sam build` indica di eseguire i comandi per `build-HelloRustFunction` l'obiettivo di compilazione.

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

Il seguente makefile contiene l'obiettivo di compilazione e i comandi che verranno eseguiti. Nota che la `CodeUri` proprietà è impostata su`.`, quindi il makefile deve trovarsi nella directory principale del progetto (ovvero, la stessa directory del file AWS SAM modello dell'applicazione). Il nome del file deve essere. `Makefile`

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

Per ulteriori informazioni sulla configurazione dell'ambiente di sviluppo per l'esecuzione del `cargo build` comando precedente`makefile`, consultate il AWS Lambda post sul blog di [Rust Runtime for](https://aws.amazon.com/blogs/opensource/rust-runtime-for-aws-lambda/).

### Esempio 2: Makefile builder per Python3.12 (alternativa all'utilizzo del builder in bundle)
<a name="building-custom-runtimes-examples-python"></a>

Potresti voler usare una libreria o un modulo che non è incluso in un builder in bundle. Questo esempio mostra un AWS SAM modello per un runtime Python3.12 con un generatore di makefile.

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

Il seguente makefile contiene l'obiettivo di compilazione e i comandi che verranno eseguiti. Nota che la `CodeUri` proprietà è impostata su`hello_world`, quindi il makefile deve trovarsi nella radice della `hello_world` sottodirectory e il nome del file deve essere. `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
```