Definir el controlador de las funciones de Lambda en PowerShell - AWS Lambda

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. Para obtener más información sobre los paquetes de implementación de PowerShell, consulte Implementar funciones Lambda de PowerShell con archivos .zip.

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.