Définition du gestionnaire de fonction Lambda dans PowerShell
Lors de l'appel d'une fonction Lambda, le gestionnaire Lambda appelle le script PowerShell.
Lorsque le script PowerShell est appelé, les variables suivantes sont prédéfinies :
-
$LambdaInput– Objet PSObject contenant l'entrée pour le gestionnaire. Ces données d'entrée peuvent être des données d'événement (publiées par une source d'événement) ou des données d'entrée personnalisées que vous fournissez, telles qu'une chaîne ou n'importe quel objet de données personnalisé. -
$LambdaContext– Objet Amazon.Lambda.Core.ILambdaContext qui vous permet d'accéder à des informations sur l'appel en cours, comme le nom de la fonction en cours d'exécution, la limite de mémoire, le temps d'exécution restant et la journalisation.
Prenons l'exemple de code PowerShell suivant.
#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'} Write-Host 'Function Name:' $LambdaContext.FunctionName
Ce script renvoie la propriété FunctionName qui est obtenue à partir de la variable $LambdaContext.
Note
Vous êtes tenu d'utiliser l'instruction #Requires dans vos scripts PowerShell pour indiquer les modules dont vos scripts dépendent. Cette instruction effectue deux tâches importantes. 1) Elle communique aux autres développeurs les modules que le script utilise, et 2) elle identifie les modules dépendants que les outils AWS PowerShell doivent mettre en package avec le script, dans le cadre du déploiement. Pour plus d'informations sur l'instruction #Requires dans PowerShell, consultez About Requires (À propos de Requires)
Lorsque votre fonction Lambda PowerShell utilise les cmdlets AWS PowerShell, veillez à définir une instruction #Requires faisant référence au module AWSPowerShell.NetCore qui prend en charge PowerShell Core, et non au module AWSPowerShell qui prend en charge uniquement Windows PowerShell. De plus, veillez à utiliser la version 3.3.270.0 ou plus récente de AWSPowerShell.NetCore, qui optimise le processus d'importation d'applet de commande. Si vous utilisez une version plus ancienne, vous connaîtrez des démarrages à froid plus longs. Pour plus d'informations, consultez Tools for PowerShell AWS
Renvoi de données
Certains appels Lambda sont destinés à renvoyer des données à leur appelant. Par exemple, si un appel répond à une demande web provenant d'API Gateway, notre fonction Lambda doit renvoyer la réponse. Pour PowerShell Lambda, le dernier objet ajouté dans le pipeline PowerShell correspond aux données de retour de l'appel Lambda. Si l'objet est une chaîne, les données sont renvoyées en l'état. Dans le cas contraire, l'objet est converti en données JSON à l'aide de l'applet de commande ConvertTo-Json.
Par exemple, prenez en considération l'instruction PowerShell suivante, qui ajoute $PSVersionTable dans le pipeline PowerShell :
$PSVersionTable
Une fois le script PowerShell terminé, 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.