

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

# Distribuzione delle funzioni Lambda di PowerShell con gli archivi di file .zip
<a name="powershell-package"></a>

Un pacchetto di distribuzione per il runtime PowerShell contiene lo script PowerShell, i moduli PowerShell necessari per lo script PowerShell e gli assembly necessari per ospitare PowerShell Core.

## Creazione di una funzione Lambda
<a name="powershell-package-create"></a>

Per iniziare a scrivere e invocare uno script PowerShell con , è possibile utilizzare il cmdlet `New-AWSPowerShellLambda` per creare un script di inizio in base a un modello. È possibile utilizzare il cmdlet `Publish-AWSPowerShellLambda` per distribuire lo script in Lambda. Quindi è possibile testare lo script utilizzando la riga di comando o la console Lambda.

Per creare un nuovo script PowerShell, caricarlo e testarlo, effettuare le seguenti operazioni:

1. Per visualizzare l'elenco dei modelli disponibili, esegui il comando seguente:

   ```
   PS C:\> Get-AWSPowerShellLambdaTemplate
   
   Template               Description
   --------               -----------
   Basic                  Bare bones script
   CodeCommitTrigger      Script to process AWS CodeCommit Triggers
   ...
   ```

1. Per creare uno script di esempio in base al modello `Basic`, esegui il comando seguente:

   ```
   New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template Basic
   ```

   Un nuovo file con nome `MyFirstPSScript.ps1` viene creato in una nuova sottodirectory della directory corrente. Il nome della directory viene determinato in base al parametro `-ScriptName`. Puoi utilizzare il parametro `-Directory` per scegliere una directory alternativa.

   Puoi vedere che il nuovo file ha il seguente contenuto:

   ```
   # PowerShell script file to run as a Lambda function
   # 
   # When executing in Lambda the following variables are predefined.
   #   $LambdaInput - A PSObject that contains the Lambda function input data.
   #   $LambdaContext - An Amazon.Lambda.Core.ILambdaContext object that contains information about the currently running Lambda environment.
   #
   # The last item in the PowerShell pipeline is returned as the result of the Lambda function.
   #
   # To include PowerShell modules with your Lambda function, like the AWSPowerShell.NetCore module, add a "#Requires" statement 
   # indicating the module and version.
                   
   #Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'}
   
   # Uncomment to send the input to CloudWatch Logs
   # Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5)
   ```

1. Per vedere come i messaggi di log dello script PowerShell vengono inviati ad Amazon CloudWatch Logs, rimuovi il commento dalla riga `Write-Host` dello script di esempio.

   Per dimostrare come puoi restituire i dati dalle tue funzioni Lambda, aggiungi una nuova riga alla fine dello script con `$PSVersionTable`. In tal modo `$PSVersionTable` viene aggiunto alla pipeline PowerShell. Al completamento dello script di PowerShell, l'ultimo oggetto nella pipeline PowerShell sono i dati restituiti per la funzione Lambda. `$PSVersionTable` è una variabile globale PowerShell che fornisce inoltre informazioni sull'ambiente di esecuzione.

   Dopo aver apportato le modifiche, le ultime due righe dello script di esempio sono come riportato di seguito:

   ```
   Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5)
   $PSVersionTable
   ```

1. Dopo la modifica del file `MyFirstPSScript.ps1`, modifica la directory sul percorso dello script. Quindi esegui il seguente comando per pubblicare lo script in Lambda:

   ```
   Publish-AWSPowerShellLambda -ScriptPath .\MyFirstPSScript.ps1 -Name  MyFirstPSScript -Region us-east-2
   ```

   Nota che il parametro `-Name` specifica il nome della funzione Lambda che viene visualizzato nella console Lambda. Puoi utilizzare questa funzione per invocare manualmente lo script.

1. Invoca la funzione utilizzando il comando AWS Command Line Interface (AWS CLI) `invoke`.

   ```
   > aws lambda invoke --function-name MyFirstPSScript out
   ```