Distribuzione delle funzioni Lambda di PowerShell con gli archivi di file .zip
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
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:
-
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 ... -
Per creare uno script di esempio in base al modello
Basic, esegui il comando seguente:New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template BasicUn nuovo file con nome
MyFirstPSScript.ps1viene creato in una nuova sottodirectory della directory corrente. Il nome della directory viene determinato in base al parametro-ScriptName. Puoi utilizzare il parametro-Directoryper 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) -
Per vedere come i messaggi di log dello script PowerShell vengono inviati ad Amazon CloudWatch Logs, rimuovi il commento dalla riga
Write-Hostdello 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$PSVersionTableviene 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 -
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-2Nota che il parametro
-Namespecifica il nome della funzione Lambda che viene visualizzato nella console Lambda. Puoi utilizzare questa funzione per invocare manualmente lo script. -
Invoca la funzione utilizzando il comando AWS Command Line Interface (AWS CLI)
invoke.> aws lambda invoke --function-name MyFirstPSScript out