Definir el controlador de las funciones de Lambda en PowerShell
Cuando se invoca una función de Lambda, el controlador de Lambda invoca al script de PowerShell.
Cuando el script de PowerShell se invoca, se predefinen las siguientes variables:
-
$LambdaInput
: un PSObject que contiene la entrada al controlador. Esta entrada puede estar formada por datos de eventos (publicados por un origen de eventos) o por una entrada personalizada que proporcione, como una cadena o cualquier objeto de datos personalizado. -
$LambdaContext
: un objeto Amazon.Lambda.Core.ILambdaContext que puede utilizar para obtener acceso a información sobre la invocación actual, como el nombre de la función actual, el límite de memoria, el tiempo de ejecución restante y el registro.
Por ejemplo, fíjese en el siguiente código de ejemplo de PowerShell.
#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'} Write-Host 'Function Name:' $LambdaContext.FunctionName
Este script devuelve la propiedad FunctionName que obtiene de la variable $LambdaContext.
nota
Es necesario que utilice la instrucción #Requires
dentro de sus scripts de PowerShell para indicar los módulos de los que dependen los scripts. Esta instrucción realiza dos tareas importantes. 1) Comunica a otros desarrolladores los módulos que utiliza el script; y 2) identifica los módulos dependientes que necesitan las herramientas de AWS PowerShell para incluir en el paquete con el script, como parte de la implementación. Para obtener más información sobre la instrucción #Requires
en PowerShell, consulte Acerca de los requisitos
Cuando su función de Lambda para PowerShell utiliza los cmdlets de AWS PowerShell, asegúrese de establecer una instrucción #Requires
que haga referencia al módulo AWSPowerShell.NetCore
, que admite PowerShell Core y no el módulo AWSPowerShell
, que solo admite Windows PowerShell. Además, asegúrese de utilizar la versión 3.3.270.0 o posterior de AWSPowerShell.NetCore
, que optimiza el proceso de importación del cmdlet. Si utiliza una versión anterior, experimentará unos arranques en frío más largos. Para obtener más información, consulte AWS Tools for PowerShell
Devolución de datos
Algunas invocaciones Lambda están destinadas a devolver los datos a la persona que llama. Por ejemplo, si una invocación se hizo en respuesta a una solicitud web procedente de API Gateway, entonces nuestra función de Lambda debe devolver la respuesta. Para PowerShell Lambda, el último objeto que se añade a la canalización de PowerShell son los datos de devolución de la invocación de Lambda. Si el objeto es una cadena, los datos se devuelven tal cual. De lo contrario, el objeto se convierte en JSON mediante el uso del cmdlet ConvertTo-Json
.
Por ejemplo, observe la siguiente instrucción de PowerShell, que añade $PSVersionTable
a la canalización de PowerShell:
$PSVersionTable
Una vez que el script de PowerShell ha finalizado, el último objeto en la canalización de PowerShell son los datos de devolución de la función de Lambda. $PSVersionTable
es una variable global de PowerShell que también proporciona información sobre el entorno en ejecución.