AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

PowerShell 中的 AWS Lambda 部署程序包

PowerShell Lambda 部署程序包是一个 ZIP 文件,其中包含您的 PowerShell 脚本、PowerShell 脚本所需的 PowerShell 模块,以及托管 PowerShell Core 所需的程序集。

AWSLambdaPSCore 模块具有以下新 cmdlet,可帮助创作和发布 PowerShell Lambda 函数。

AWSLambdaPSCore Cmdlets

  • Get-AWSPowerShellLambdaTemplate – 返回入门模板列表。

  • New-AWSPowerShellLambda – 根据模板创建初始 PowerShell 脚本。

  • Publish-AWSPowerShellLambda – 将给定 PowerShell 脚本发布到 Lambda。

  • New-AWSPowerShellLambdaPackage – 创建 Lambda 部署程序包,可以在 CI/CD 系统中用于部署。

为了帮助使用 Lambda 开始编写并调用 PowerShell 脚本,您可以使用 New-AWSPowerShellLambda cmdlet 基于模板创建一个入门脚本。您可以使用 Publish-AWSPowerShellLambda cmdlet 将脚本部署到 AWS Lambda。然后,您可以通过命令行或控制台测试您的脚本。

要创建、上传和测试新的 PowerShell 脚本,请遵循以下步骤:

  1. 运行以下命令,以查看可用模板列表:

    PS C:\> Get-AWSPowerShellLambdaTemplate Template Description -------- ----------- Basic Bare bones script CodeCommitTrigger Script to process AWS CodeCommit Triggers ...
  2. 运行以下命令,以基于 Basic 模板创建示例脚本:

    New-AWSPowerShellLambda -ScriptName MyFirstPSScript -Template Basic

    当前目录的新子目录中创建一个名为 MyFirstPSScript.ps1 的新文件。目录名称基于 -ScriptName 参数。您可以使用 -Directory 参数来选择其他目录。

    您可以看到新文件包含以下内容:

    # 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. 要查看日志消息如何从您的 PowerShell 脚本发送到 CloudWatch Logs,请取消示例脚本的 Write-Host 行的注释。

    要演示如何从 Lambda 函数返回数据,请使用 $PSVersionTable 在脚本末尾添加新的一行。这会将 $PSVersionTable 添加到 PowerShell 管道。PowerShell 脚本完成后,PowerShell 管道中的最后一个对象是 Lambda 函数的返回数据。$PSVersionTable 是 PowerShell 全局变量,还提供有关正在运行的环境的信息。

    做出这些更改之后,示例脚本的最后两行如下所示:

    Write-Host (ConvertTo-Json -InputObject $LambdaInput -Compress -Depth 5) $PSVersionTable
  4. 编辑 MyFirstPSScript.ps1 文件后,将目录更改为脚本的位置。然后运行以下命令,将脚本发布到 AWS Lambda:

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

    注意,-Name 参数指定 Lambda 函数名称,该名称将显示在 Lambda 控制台中。您可以使用此函数手动调用脚本。

  5. 使用 AWS CLI invoke 命令调用您的函数。

    > aws lambda invoke --function-name MyFirstPSScript out