Implantar funções do Lambda para PowerShell com arquivos .zip - AWS Lambda

Implantar funções do Lambda para PowerShell com arquivos .zip

Um pacote de implantação do runtime para PowerShell conterá seu script do PowerShell, os módulos do PowerShell exigidos por esse script e os assemblies requeridos para hospedar o PowerShell Core.

Criar a função do Lambda

Para começar a gravar e invocar um script do PowerShell com o Lambda, você pode usar o cmdlet New-AWSPowerShellLambda para criar um script inicial com base em um modelo. Você pode usar o cmdlet Publish-AWSPowerShellLambda para implantar seu script no Lambda. Em seguida, você pode testar seu script na linha de comando ou no console do Lambda.

Para criar um novo script do PowerShell, fazer upload dele e testá-lo, siga este procedimento:

  1. Execute o seguinte comando para exibir a lista de modelos disponíveis:

    PS C:\> Get-AWSPowerShellLambdaTemplate Template Description -------- ----------- Basic Bare bones script CodeCommitTrigger Script to process AWS CodeCommit Triggers ...
  2. Para criar um script de amostra com base no modelo Basic, execute o seguinte comando:

    New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template Basic

    Um novo arquivo chamado MyFirstPSScript.ps1 é criado em um novo subdiretório do diretório atual. O nome do diretório é baseado no parâmetro -ScriptName. Você pode usar o parâmetro -Directory para escolher um diretório alternativo.

    É possível ver que o novo arquivo tem o seguinte conteúdo:

    # 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 como as mensagens de log do script do PowerShell são enviadas ao Amazon CloudWatch Logs, exclua as barras de comentário da linha Write-Host do script de amostra.

    Para demonstrar como você pode retornar dados das suas funções do Lambda, adicione uma nova linha no final do script com $PSVersionTable. Isso adiciona o $PSVersionTable ao pipeline do PowerShell. Depois que o script PowerShell estiver concluído, o último objeto no pipeline do PowerShell será os dados de retorno da função do Lambda. $PSVersionTable é uma variável global do PowerShell que também fornece informações sobre o ambiente de execução.

    Depois de fazer essas alterações, as duas últimas linhas do script de amostra terão esta aparência:

    Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5) $PSVersionTable
  4. Depois de editar o arquivo MyFirstPSScript.ps1, altere o diretório para o local do script. Em seguida, execute o seguinte comando para publicar o script no Lambda:

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

    Observe que o parâmetro -Name especifica o nome da função do Lambda, que aparece no console do Lambda. Você pode usar essa função para chamar seu script manualmente.

  5. Invoque sua função usando o comando invoke da AWS Command Line Interface (AWS CLI).

    > aws lambda invoke --function-name MyFirstPSScript out