PowerShell-Lambda-Funktionen mit .zip-Dateiarchiven bereitstellen - AWS Lambda

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:

  1. 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 ...
  2. Führen Sie den folgenden Befehl aus, um ein Beispielskript anhand der Basic-Vorlage zu erstellen:

    New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template Basic

    Eine neue Datei mit dem Namen MyFirstPSScript.ps1 wird 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)
  3. 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 $PSVersionTable der 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 $PSVersionTable handelt 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
  4. 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-2

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

  5. Rufen Sie Ihre Funktion mit dem AWS Command Line Interface (AWS CLI) invoke-Befehl auf.

    > aws lambda invoke --function-name MyFirstPSScript out