Déployer des fonctions Lambda PowerShell avec des archives de fichiers .zip
Un package de déploiement pour le runtime PowerShell contient votre script PowerShell, les modules PowerShell requis pour votre script PowerShell, ainsi que les assemblies nécessaires pour héberger PowerShell Core.
Création de la fonction Lambda
Pour commencer à écrire et appeler un script PowerShell avec Lambda, vous pouvez utiliser la cmdlet New-AWSPowerShellLambda
pour créer un script de démarrage basé sur un modèle. Vous pouvez utiliser la cmdlet Publish-AWSPowerShellLambda
pour déployer votre script vers Lambda. Ensuite, vous pouvez tester votre script via la ligne de commande ou la console Lambda.
Pour créer un nouveau script PowerShell, le charger et le tester, procédez aux étapes suivantes :
-
Pour afficher la liste des modèles disponibles, exécutez la commande suivante :
PS C:\> Get-AWSPowerShellLambdaTemplate Template Description -------- ----------- Basic Bare bones script CodeCommitTrigger Script to process AWS CodeCommit Triggers ...
-
Pour créer un exemple de script basé sur le modèle
Basic
, exécutez la commande suivante :New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template Basic
Un nouveau fichier nommé
MyFirstPSScript.ps1
est créé dans un nouveau sous-répertoire du répertoire actuel. Le nom de ce répertoire est basé sur le paramètre-ScriptName
. Vous pouvez utiliser le paramètre-Directory
pour choisir un autre répertoire.Vous pouvez voir que le nouveau fichier a le contenu suivant :
# 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)
-
Pour voir comment les messages du journal de votre script PowerShell sont envoyés à Amazon CloudWatch Logs, supprimez le commentaire de la ligne
Write-Host
de l'exemple de script.Pour illustrer comment renvoyer des données à partir de vos fonctions Lambda, ajoutez une ligne à la fin du script avec
$PSVersionTable
. Cela ajoute$PSVersionTable
dans le pipeline PowerShell. Une fois l'exécution du script PowerShell terminée, le dernier objet figurant dans le pipeline PowerShell correspond aux données de retour de la fonction Lambda.$PSVersionTable
est une variable globale PowerShell qui fournit également des informations sur l'environnement d'exécution.Après avoir effectué ces modifications, les deux dernières lignes de l'exemple de script ressemblent à ce qui suit :
Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5) $PSVersionTable
-
Après avoir modifié le fichier
MyFirstPSScript.ps1
, modifiez le répertoire en spécifiant l'emplacement du script. Exécutez ensuite la commande suivante pour publier le script dans Lambda :Publish-AWSPowerShellLambda -ScriptPath .\MyFirstPSScript.ps1 -Name MyFirstPSScript -Region us-east-2
Notez que le paramètre
-Name
spécifie le nom de la fonction Lambda qui s'affiche dans la console Lambda. Vous pouvez utiliser cette fonction pour appeler manuellement votre script. -
Appelez votre fonction à l'aide de la commande AWS Command Line Interface (AWS CLI)
invoke
.> aws lambda invoke --function-name MyFirstPSScript out