PowerShell-Lambda-Funktionen mit .zip-Dateiarchiven bereitstellen
Ein Bereitstellungspaket für die PowerShell-Laufzeit enthält Ihr PowerShell-Skript, PowerShell-Module, die für Ihr PowerShell-Skript erforderlich sind, und die Komponenten, die zum Hosten von PowerShell Core erforderlich sind.
Erstellen der Lambda-Funktion
Um die ersten Schritte zum Schreiben und Aufrufen eines PowerShell-Skripts mit Lambda auszuführen, können Sie das New-AWSPowerShellLambda-Cmdlet verwenden, um ein Starter-Skript basierend auf einer Vorlage zu erstellen. Sie können das Publish-AWSPowerShellLambda-Cmdlet verwenden, um Ihr Skript in Lambda bereitzustellen. Anschließend können Sie Ihr Skript entweder über die Befehlszeile oder die Lambda-Konsole testen.
Zum Erstellen, Hochladen und Testen eines neuen PowerShell-Skripts gehen Sie wie folgt vor:
-
Führen Sie den folgenden Befehl aus, um die Liste der verfügbaren Vorlagen anzuzeigen:
PS C:\> Get-AWSPowerShellLambdaTemplate Template Description -------- ----------- Basic Bare bones script CodeCommitTrigger Script to process AWS CodeCommit Triggers ... -
Führen Sie den folgenden Befehl aus, um ein Beispielskript anhand der
Basic-Vorlage zu erstellen:New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template BasicEine neue Datei mit dem Namen
MyFirstPSScript.ps1wird in einem neuen Unterverzeichnis des aktuellen Verzeichnisses erstellt. Der Name des Verzeichnisses basiert auf dem-ScriptName-Parameter. Sie können den-Directory-Parameter verwenden, um ein alternatives Verzeichnis auswählen.Sie können sehen, dass die neue Datei folgenden Inhalt hat:
# 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) -
Wenn Sie wissen möchten, wie Log-Nachrichten von Ihrem PowerShell-Skript an Amazon CloudWatch Logs gesendet werden, entfernen Sie die Kommentarzeichen in der
Write-Host-Zeile des Beispielskripts.Um zu veranschaulichen, wie Sie Daten von Ihren Lambda-Funktionen zurückgeben können, fügen Sie mit eine neue Zeile am Ende des Skripts hinzu
$PSVersionTable. Damit wird$PSVersionTableder PowerShell-Pipeline hinzugefügt. Nachdem das PowerShell-Skript abgeschlossen ist, ist das letzte Objekt der PowerShell-Pipeline der Rückgabewert für die Lambda-Funktion. Bei$PSVersionTablehandelt es sich um eine globale PowerShell-Variable, die außerdem Informationen über die laufende Umgebung bietet.Nachdem Sie alle Änderungen vorgenommen haben, sehen die beiden letzten Zeilen des Beispielskripts wie folgt aus:
Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5) $PSVersionTable -
Nachdem Sie die
MyFirstPSScript.ps1-Datei bearbeitet haben, ändern Sie das Verzeichnis in den Speicherort des Skripts. Führen Sie anschließend führen Sie den folgenden Befehl aus, um das Skript in Lambda zu veröffentlichen:Publish-AWSPowerShellLambda -ScriptPath .\MyFirstPSScript.ps1 -Name MyFirstPSScript -Region us-east-2Beachten Sie, dass der
-Name-Parameter den Lambda-Funktionsnamen angibt, der in der Lambda-Konsole angezeigt wird. Sie können diese Funktion auch verwenden, um Ihr Skript manuell aufzurufen. -
Rufen Sie Ihre Funktion mit dem AWS Command Line Interface (AWS CLI)
invoke-Befehl auf.> aws lambda invoke --function-name MyFirstPSScript out