最近,AWS 发布了一个新的 PowerShell 自定义运行时,可让 AWS Lambda 运行使用 PowerShell 编写的 Lambda 函数。有了这个运行时,开发人员无需编译就可以用 Lambda 编写原生 PowerShell 代码,从而简化了部署和测试。
AWS 的无服务器开发者布道师 Julian Wood 介绍了它的优势:
新的 PowerShell 自定义运行时使用了原生 PowerShell,不需要编译 PowerShell 并托管在.NET 运行时上。使用原生 PowerShell 意味着函数运行时环境与标准的 PowerShell 会话是匹配的,这简化了开发和测试过程……这个自定义运行时将管道上的所有内容作为函数输出返回,包括 Write-Output 的输出。开发人员能够更好地控制函数输出、错误消息和日志记录。
虽然 Lambda 从 2018 年开始就支持PowerShell,但之前的解决方案需要依赖.NET Core 运行时,并且一个函数只返回 PowerShell 管道的最后一次输出。微软 MVP、Powershell 推广者 Justin Grote 在推特上写道:
AWS Lambda 终于有了一个 PowerShell 运行时,而不是“为 PowerShell 构建一个 C#应用,这就是我们支持 PowerShell 的方式”。伟大的杰作!
图片来源:https://aws.amazon.com/blogs/compute/introducing-the-powershell-custom-runtime-for-aws-lambda/
用 PowerShell 构建的 Lambda 函数目前支持.NET 6 和.NET Core 3.1。运行时定义了两个 Lambda 函数可用的主要变量:$LambdaInput,一个包含输入事件数据的 PSObject,以及 $LambdaContext,一个包含调用和运行时环境信息的方法和属性的对象。
亚马逊系统开发工程师、《PowerShell Explained》作者 Kevin Marquette 写道:
这真是太棒了。我对之前的 PowerShell Lambda 开发体验不是很满意,所以我创建了一个自定义运行时来提升用户体验。他们采用了我的概念,并投入资源使其成为现实。我很高兴它终于发布了。
新的自定义运行时允许开发人员直接在 Lambda 控制台中编辑 PowerShell 代码,并支持其他附加功能,比如 Add-Type 和各种不同的处理程序选项。Wood 解释了如何构建和打包:
自定义运行时基于 Lambda 的 provided.al2 运行时,它运行在 Amazon Linux 环境中……你可以构建运行时并将其打包成一个 Lambda 层,或将其包含在容器镜像中。如果将其打包为一个层,可以将其添加到多个函数中,从而简化部署。运行时基于跨平台的 PowerShell Core,这意味着你可以在 Windows、Linux 或 macOS 上开发 PowerShell Lambda 函数。
自定义运行时的代码可在GitHub库中找到,其中也包含了安装选项和不同的示例。
原文链接:
评论