本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon Lambda中的函数处理器 PowerShell
调用 Lambda 函数时,Lambda 处理程序会调用该脚本。 PowerShell
调用 PowerShell 脚本时,会预定义以下变量:
-
$ LambdaInput
— 包含处理程序输入的 PSObject。该输入可以是事件数据(由事件源发布)或您提供的自定义输入(如字符串或任意自定义数据对象)。 -
$ LambdaContext
— 一个 Amazon.Lambda.Core.I LambdaContext 对象,可用于访问有关当前调用的信息,例如当前函数的名称、内存限制、剩余执行时间和日志记录。
例如,考虑以下 PowerShell 示例代码。
#Requires -Modules @{ModuleName='AWSPowerShell.NetCore';ModuleVersion='3.3.618.0'} Write-Host 'Function Name:' $LambdaContext.FunctionName
此脚本返回从 $ LambdaContext 变量中获得的 FunctionName 属性。
注意
你需要在脚本中使用#Requires
语句来指明 PowerShell 脚本所依赖的模块。此语句可执行两个重要任务。1) 它向其他开发人员传达脚本使用哪些模块,2) 它标识Amazon PowerShell 工具在部署过程中需要与脚本打包的依赖模块。有关中#Requires
语句的更多信息 PowerShell,请参阅关于需求
当您的 PowerShell Lambda 函数使用 Amazon PowerShell cmdlet 时,请务必设置一条#Requires
语句来引用支持 PowerShell 核心的AWSPowerShell.NetCore
模块,而不是仅支持 Windows 的AWSPowerShell
模块。 PowerShell此外,请确保使用 3.3.270.0 版或更新版本的 AWSPowerShell.NetCore
,其优化了 cmdlet 导入过程。如果使用较旧版本,冷启动时间较长。有关更多信息,请参阅Amazon工具 PowerShell
返回数据
有些 Lambda 调用旨在为调用方返回数据。例如,如果某个调用是为了响应来自 API Gateway 的 Web 请求,则我们的 Lambda 函数需要返回响应。对于 PowerShell Lambda,添加到 PowerShell 管道中的最后一个对象是 Lambda 调用的返回数据。如果对象是字符串,数据将按原样返回。否则,对象将使用 ConvertTo-Json
cmdlet 转换为 JSON。
例如,考虑以下 PowerShell 语句,该语句$PSVersionTable
添加到 PowerShell 管道中:
$PSVersionTable
PowerShell 脚本完成后, PowerShell 管道中的最后一个对象是 Lambda 函数的返回数据。 $PSVersionTable
是一个 PowerShell 全局变量,它还提供有关运行环境的信息。