Implementar funciones Lambda de PowerShell con archivos .zip - AWS Lambda

Implementar funciones Lambda de PowerShell con archivos .zip

Un paquete de implementación para el tiempo de ejecución de PowerShell contiene su script de PowerShell, los módulos de PowerShell necesarios para su script de PowerShell y los ensamblados necesarios para alojar PowerShell Core.

Creación de la función de Lambda

Para que le resulte más fácil empezar a escribir e invocar un script de PowerShell con Lambda, puede utilizar el cmdlet New-AWSPowerShellLambda para crear un script de inicio basado en una plantilla. Puede utilizar el cmdlet Publish-AWSPowerShellLambda para implementar su script en Lambda. A continuación, puede probar el script ya sea a través de la línea de comandos o de la consola de Lambda.

Para crear un nuevo script de PowerShell, cargarlo y probarlo, haga lo siguiente:

  1. Para ver la lista de plantillas disponibles, ejecute el siguiente comando:

    PS C:\> Get-AWSPowerShellLambdaTemplate Template Description -------- ----------- Basic Bare bones script CodeCommitTrigger Script to process AWS CodeCommit Triggers ...
  2. Para crear un script de ejemplo basado en la plantillaBasic, ejecute el siguiente comando:

    New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template Basic

    Se creará un nuevo archivo denominado MyFirstPSScript.ps1 en un nuevo subdirectorio del directorio actual. El nombre del directorio se basa en el parámetro -ScriptName. Puede utilizar el parámetro -Directory para elegir otro directorio.

    Puede ver que el nuevo archivo tiene el siguiente contenido:

    # 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. Para ver cómo se envían los mensajes de registro desde su script de PowerShell a Amazon CloudWatch Logs, anule el comentario de la línea Write-Host del script de muestra.

    Para demostrar cómo puede devolver los datos de sus funciones de Lambda, agregue una nueva línea al final del script con $PSVersionTable. Esto agregará $PSVersionTable a la canalización de PowerShell. Una vez que el script de PowerShell se ha completado, 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.

    Después de realizar estos cambios, las dos últimas líneas del script de muestra tienen un aspecto similar al siguiente:

    Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5) $PSVersionTable
  4. Después de editar el archivo MyFirstPSScript.ps1, cambie el directorio a la ubicación del script. Después, ejecute el siguiente comando para publicar el script en Lambda:

    Publish-AWSPowerShellLambda -ScriptPath .\MyFirstPSScript.ps1 -Name MyFirstPSScript -Region us-east-2

    Tenga en cuenta que el parámetro -Name especifica el nombre de la función de , que aparece en la consola de Lambda. Puede utilizar esta función para invocar manualmente a su script.

  5. Invoque su función con el comando invoke AWS Command Line Interface (AWS CLI).

    > aws lambda invoke --function-name MyFirstPSScript out