AWS Lambda
Guia do desenvolvedor

Pacote de implantação do AWS Lambda no PowerShell

Um pacote de implantação do Lambda para PowerShell é um arquivo ZIP que contém seu script do PowerShell, os módulos do PowerShell que são necessários para esse script e os assemblies necessários para hospedar o PowerShell Core.

O módulo AWSLambdaPSCore possui os novos cmdlets a seguir para ajudar a criar e publicar as funções Lambda para PowerShell.

Cmdlets AWSLambdaPSCore

  • Get-AWSPowerShellLambdaTemplate – Retorna uma lista de modelos de conceitos básicos.

  • New-AWSPowerShellLambda – Cria um script do PowerShell inicial com base em um modelo.

  • Publish-AWSPowerShellLambda – Publica um determinado script do PowerShell para o Lambda.

  • New-AWSPowerShellLambdaPackage – Cria um pacote de implantação do Lambda que pode ser usado em um sistema CI/CD para implantação.

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

Para criar um novo script PowerShell, carregá-lo e testá-lo, siga este procedimento:

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

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

    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 be executed as a AWS Lambda function. # # When executing in Lambda the following variables will be 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 will be 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.343.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 PowerShell são enviadas ao 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 AWS 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 a função com o comando invoke da CLI da AWS.

    > aws lambda invoke --function-name MyFirstPSScript out