定义采用 PowerShell 的 Lambda 函数处理程序 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

定义采用 PowerShell 的 Lambda 函数处理程序

当调用 Lambda 函数时,Lambda 处理程序会调用 PowerShell 脚本。

调用 PowerShell 脚本时,以下变量已预定义:

  • $LambdaInput – 包含处理程序输入的 PSObject。该输入可以是事件数据(由事件源发布)或您提供的自定义输入(如字符串或任意自定义数据对象)。

  • $LambdaContext – 一个 Amazon.Lambda.Core.ILambdaContext 对象,用于访问有关当前调用的信息(例如当前函数的名称、内存限制、剩余执行时间和日志记录)。

例如,请考虑以下 PowerShell 示例代码。

#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'} Write-Host 'Function Name:' $LambdaContext.FunctionName

此脚本返回从 $LambdaContext 变量获得的 FunctionName 属性。

注意

您需要使用 PowerShell 脚本中的 #Requires 语句指示您的脚本所依赖的模块。此语句可执行两个重要任务。1) 它可告知其他开发人员该脚本使用的模块,2) 它可标识 Amazon PowerShell 工具在部署过程中使用脚本打包所需要的从属模块。有关 PowerShell 中的 #Requires 语句的更多信息,请参阅关于 Requires。有关 PowerShell 部署程序包的更多信息,请参阅使用.zip 文件存档部署 PowerShell Lambda 函数

当您的 PowerShell Lambda 函数使用 Amazon PowerShell cmdlet 时,请务必设置一个 #Requires 语句,使其引用 AWSPowerShell.NetCore 模块,该模块支持 PowerShell Core,而不是 AWSPowerShell 模块,该模块仅支持 Windows PowerShell。此外,请确保使用 3.3.270.0 版或更新版本的 AWSPowerShell.NetCore,其优化了 cmdlet 导入过程。如果使用较旧版本,冷启动时间较长。有关更多信息,请参阅 Amazon Tools for PowerShell

返回数据

有些 Lambda 调用旨在为调用方返回数据。例如,如果某个调用是为了响应来自 API Gateway 的 Web 请求,则我们的 Lambda 函数需要返回响应。对于 PowerShell Lambda,添加到 PowerShell 管道的最后一个对象是 Lambda 调用返回的数据。如果对象是字符串,数据将按原样返回。否则,对象将使用 ConvertTo-Json cmdlet 转换为 JSON。

例如,请考虑以下 PowerShell 语句,该语句在 PowerShell 管道中添加 $PSVersionTable

$PSVersionTable

PowerShell 脚本完成后,PowerShell 管道中的最后一个对象是 Lambda 函数的返回数据。$PSVersionTable 是 PowerShell 全局变量,还提供有关正在运行的环境的信息。