AWS Developer Tools Blog
PowerShell 7 support with AWS Lambda
Recently we released our .NET Core 3.1 AWS Lambda runtime. With our previous .NET Core 2.1 Lambda runtime we released the AWSLambdaPSCore PowerShell module that made it easy to deploy PowerShell scripts to Lambda using PowerShell 6 and the .NET Core 2.1 Lambda Runtime.
Now we have released version 2.0.0 of the PowerShell module AWSLambdaPSCore. This new version deploys PowerShell scripts to Lambda using PowerShell 7 and the new .NET Core 3.1 Lambda Runtime.
For a tutorial on how to use AWSLambdaPSCore to deploy PowerShell scripts see this previous blog post introducing the AWSLambdaPSCore module.
AWS Tools for PowerShell 4.0.0
Since we released the original version of AWSLambdaPSCore, AWS Tools for PowerShell version 4 has been released. This major update contains many new features like support for mandatory parameters, easy to use Stream parameters, and a new -Select
parameter to control the output of cmdlets. You can read more about this release here.
The biggest change in version 4 of the AWS Tools for PowerShell was a refactor to a more modular version, with a separate PowerShell module for each AWS service, as well as a shared module named AWS.Tools.Common
. This means your scripts can import modules for only the services they need. When you write your PowerShell scripts to deploy to Lambda I recommend using the modular variant as opposed to the much larger AWSPowerShell.NetCore
module. Your deployment bundle will be much smaller and it can be faster to import the smaller service modules, as opposed to the large all-encompassing AWSPowerShell.NetCore
module.
When the deployment bundle is created by AWSLambdaPSCore the script is inspected for #Requires
statements and the requested modules are included in the deployment bundle. Be sure to have a #Requires
statement for AWS.Tools.Common
module whenever using the modular AWS.Tools modules. Here is an example of adding the module for Amazon S3 to your PowerShell script.
#Requires -Modules @{ModuleName='AWS.Tools.Common';ModuleVersion='4.0.5.0'}
#Requires -Modules @{ModuleName='AWS.Tools.S3';ModuleVersion='4.0.5.0'}
Conclusion
PowerShell 7 is an exciting release to the PowerShell community and we are excited to see our AWS PowerShell community take advantage of PowerShell 7 on AWS Lambda.
Our Lambda tooling for PowerShell is open source and you can check it out here. For any feedback for our Lambda PowerShell tooling let us know there.