Amazonは最近のブログ投稿で、開発者と管理者がPowerShellスクリプト環境からAWSサービスを管理できるリファクタリングされたPowerShell用のAWSツールのプレビューをリリースすると発表した。プレビューでは、開発者と管理者がインストールするモジュールを選択できるため、起動時間が短縮される。また、必須パラメーター機能が含まれ、古いコマンドレットや廃止されたコマンドレットが削除された。
2012年にPowerShell for AWSが最初にリリースされて以来、Amazonはツールキット向けのコマンドレットを拡張し、160を超えるサービスにまたがって6000にほぼ達した。次に、これらのコマンドレットに、Amazonは、クロスプラットフォームで実行できる、PowerShell 6以上のユーザ向けのモジュールも追加した。これらのコマンドレットはすべて1つのモジュールに含まれているため、インポートする時間が大幅に増加した。
現在、Amazonは新しい一連のモジュールをPowerShellギャラリーにリリースすることにより、ロード時間の問題に取り組んでいる。ユーザは、AWSサービスごとにPowerShellモジュールのプレビューリリースを取得できるようになった。さらに、これらのPowerShellモジュールのプレビューはそれぞれ、AWS.Tools.Commonという名前のユニバーサル共有モジュールに依存している。これは、NuGetでAWS SDK for .NETに対してAmazonが取ったものと同様のアプローチである。
発表のブログ投稿によると、Amazonの上級技術エバンジェリストであるSteve Roberts氏は、このアプローチの意味を説明している。
- 開発者と管理者は、すべてのサービスに対する1つの大きなモジュールをダウンロードしてインストールする代わりに、必要なサービスのモジュールのみをインストールできるようになった。サービス固有のモジュールをインストールすると、ユニバーサルモジュールがバックグラウンドで自動的にインストールされる。
- 開発者と管理者は、各モジュールのCmdletsToExportマニフェストプロパティが正しく指定されるようになったため、使用前にプレビューモジュールを明示的にインポートする必要がなくなった。
- 現在、新しいモジュールのバージョン管理戦略は、AWSPowerShellおよびAWSPowerShell.NetCoreモジュールに従っている。PowerShellを担当するAWSチームは、プレビューのGitHubリポジトリ通知でこの戦略を詳しく説明している。
リファクタリングと共に、チームは他にもいくつかの変更を加えた。CloudWatchEventsやElasticLoadBalacingなどの古くて廃止されたコマンドレットを削除し、新しいモジュールを採用した。さらに、必須パラメーターを機能として追加し、開発者と管理者が必要に応じてパラメーターをマークできるようにした。
PowerShell関数を作成する場合、開発者と管理者は新しいモジュールを使うために#Requiresステートメントを使用してスクリプトを作成または更新する必要がある。さらに、ユニバーサルモジュールAWS.Tools.Commonに対してこのステートメントを追加する必要もある。たとえば、開発者がAmazon Simple Storage Service(S3)を使用するLambda関数をPowerShellで作成する場合、次の2つのステートメントを関数のスクリプトファイルに追加する必要がある。
#Requires -Modules @{ModuleName='AWS.Tools.Common';ModuleVersion='3.3.563.0'}
#Requires -Modules @{ModuleName='AWS.Tools.S3';ModuleVersion='3.3.563.0'}
開発者と管理者は、PowerShellギャラリーから新しいモジュールにアクセスできる。さらに、PowerShellモジュールを担当するAWSチームのGitHubイシューリポジトリで、フィードバック、考え、互換性の問題を送信できる。