

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à.

# Implementazione di funzioni Lambda per Go con gli archivi di file .zip
<a name="rust-package"></a>

Questa pagina descrive come compilare la funzione Rust e quindi distribuire il binario compilato su Cargo [Lambda AWS Lambda](https://www.cargo-lambda.info/guide/what-is-cargo-lambda.html). Mostra anche come distribuire il binario compilato con AWS Command Line Interface e la AWS Serverless Application Model CLI.

**Topics**
+ [

## Prerequisiti
](#rust-package-prerequisites)
+ [

## Compilazione di funzioni Rust su macOS, Windows o Linux
](#rust-package-build)
+ [

## Implementazione del file binario di funzioni Rust con Cargo Lambda
](#rust-deploy-cargo)
+ [

## Richiamo della funzione Rust con Cargo Lambda
](#rust-invoke-function)

## Prerequisiti
<a name="rust-package-prerequisites"></a>
+ [Rust](https://www.rust-lang.org/tools/install)
+ [AWS CLI versione 2](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)

## Compilazione di funzioni Rust su macOS, Windows o Linux
<a name="rust-package-build"></a>

I passaggi seguenti mostrano come creare il progetto per la prima funzione Lambda con Rust e compilarlo con Cargo Lambda, un'estensione open source di terze parti dello [strumento da riga di comando Cargo che semplifica la creazione e l'implementazione di funzioni Rust Lambda](https://www.cargo-lambda.info/).

1. Installa [Cargo Lambda](https://www.cargo-lambda.info/guide/what-is-cargo-lambda.html), un'estensione open source di terze parti per lo strumento da riga di comando Cargo che semplifica la creazione e l'implementazione di funzioni Rust Lambda:

   ```
   cargo install cargo-lambda
   ```

   Per altre opzioni di installazione, consulta [Installazione](https://www.cargo-lambda.info/guide/installation.html) nella documentazione di Cargo Lambda.

1. Crea la struttura del pacchetto. Questo comando crea un codice di funzione di base in `src/main.rs`. A fini di test, puoi utilizzare questo codice o sostituirlo con il tuo codice personalizzato.

   ```
   cargo lambda new my-function
   ```

1. All'interno della directory principale del pacchetto, esegui il sottocomando [build](https://www.cargo-lambda.info/commands/build.html) per compilare il codice nella funzione.

   ```
   cargo lambda build --release
   ```

   (Facoltativo) Se vuoi usare AWS Graviton2 su Lambda, aggiungi il `--arm64` flag per compilare il codice per ARM. CPUs

   ```
   cargo lambda build --release --arm64
   ```

1. Prima di distribuire la funzione Rust, configura le credenziali sulla tua macchina. AWS 

   ```
   aws configure
   ```

## Implementazione del file binario di funzioni Rust con Cargo Lambda
<a name="rust-deploy-cargo"></a>

Utilizza il sottocomando [deploy](https://www.cargo-lambda.info/commands/deploy.html) per implementare il file binario compilato su Lambda. Questo comando crea un [ruolo di esecuzione](lambda-intro-execution-role.md) e quindi crea la funzione Lambda. Per specificare un ruolo di esecuzione esistente, utilizza il [flag --iam-role](https://www.cargo-lambda.info/commands/deploy.html#iam-roles).

```
cargo lambda deploy my-function
```

### Distribuzione del file binario della funzione Rust con AWS CLI
<a name="rust-deploy-aws-cli"></a>

Puoi anche distribuire il tuo file binario con. AWS CLI

1. Per compilare il pacchetto di implementazione .zip, utilizza il sottocomando [build](https://www.cargo-lambda.info/commands/build.html).

   ```
   cargo lambda build --release --output-format zip
   ```

1. Per implementare il pacchetto .zip su Lambda, eseguire il comando [create-function](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html).
   + Per `--runtime`, specificare `provided.al2023`. Questo è un [runtime solo per il sistema operativo](runtimes-provided.md). I runtime solo per il sistema operativo vengono utilizzati per distribuire file binari compilati e runtime personalizzati su Lambda.
   + Per `--role`, specifica l'ARN del [ruolo di esecuzione](lambda-intro-execution-role.md).

   ```
   aws lambda create-function \
        --function-name my-function \
        --runtime provided.al2023 \
        --role arn:aws:iam::111122223333:role/lambda-role \
        --handler rust.handler \
        --zip-file fileb://target/lambda/my-function/bootstrap.zip
   ```

### Distribuzione del binario della funzione Rust con la CLI AWS SAM
<a name="rust-deploy-sam-cli"></a>

Puoi anche distribuire il tuo file binario con la AWS SAM CLI.

1. Crea un AWS SAM modello con la definizione delle risorse e delle proprietà. Per `Runtime`, specificare `provided.al2023`. Questo è un [runtime solo per il sistema operativo](runtimes-provided.md). I runtime solo per il sistema operativo vengono utilizzati per distribuire file binari compilati e runtime personalizzati su Lambda.

   Per ulteriori informazioni sulla distribuzione delle funzioni Lambda AWS SAM utilizzando, [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)consulta la Guida per *AWS Serverless Application Model gli* sviluppatori.  
**Example Definizione di risorse e proprietà SAM per un file binario Rust**  

   ```
   AWSTemplateFormatVersion: '2010-09-09'
   Transform: AWS::Serverless-2016-10-31
   Description: SAM template for Rust binaries
   Resources:
     RustFunction:
       Type: AWS::Serverless::Function 
       Properties:
         CodeUri: target/lambda/my-function/
         Handler: rust.handler
         Runtime: provided.al2023
   Outputs:
     RustFunction:
       Description: "Lambda Function ARN"
       Value: !GetAtt RustFunction.Arn
   ```

1. Utilizza il sottocomando [build](https://www.cargo-lambda.info/commands/build.html) per compilare la funzione.

   ```
   cargo lambda build --release
   ```

1. Utilizza il comando [sam deploy](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-deploy.html) per implementare la funzione su Lambda.

   ```
   sam deploy --guided
   ```

*Per ulteriori informazioni sulla creazione di funzioni Rust con la AWS SAM CLI, consulta [Creazione di funzioni Rust Lambda con Cargo Lambda nella Developer Guide](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/building-rust.html).AWS Serverless Application Model *

## Richiamo della funzione Rust con Cargo Lambda
<a name="rust-invoke-function"></a>

Utilizza il sottocomando [invoke](https://www.cargo-lambda.info/commands/invoke.html) per testare la tua funzione con un payload.

```
cargo lambda invoke --remote --data-ascii '{"command": "Hello world"}' my-function
```

### Invocare la funzione Rust con AWS CLI
<a name="rust-invoke-cli"></a>

Puoi anche usare il AWS CLI per richiamare la funzione.

```
aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"command": "Hello world"}' /tmp/out.txt
```

L'**cli-binary-format**opzione è obbligatoria se si utilizza la AWS CLI versione 2. Per rendere questa impostazione come predefinita, esegui `aws configure set cli-binary-format raw-in-base64-out`. Per ulteriori informazioni, consulta la pagina [AWS CLI supported global command line options](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-options.html#cli-configure-options-list) nella *Guida per l'utente di AWS Command Line Interface versione 2*.