AWS Tools for PowerShell 4.1.15.0 の更新に失敗する件について

2021.10.04

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

2021年10月1日付けで(実際のリリースは10月3日ごろ)AWS Tools for PowerShellの最新バージョンである Ver.4.1.15.0 がリリースされました。

通常AWS Tools for PowerShellは1ヶ月に一度程度の頻度で更新されていたのですが、今回は内部実装の見直しがあったということで約3ヶ月ぶりのリリースとなります。

既知の問題

で、この内部実装の見直しの影響なのか通常の方法でVer.4.1.15.0にモジュールを更新しようとすると証明書関連のエラーが出てしまいます。
こちらは既知の問題としてGitHubにIssueが起票されており対応方法も記載されています。

この対応方法がPowerShellに慣れてる方でないと少しわかりにくい感じだったので本記事で解説しようと思います。

対応方法

対応の基本方針としてはモジュールインストール時に参照する証明書が正しくない旨のエラーが出てしまうのが根本原因のため証明書チェックをスキップする方針となっています。
そして、AWS Tools for PowerShell V4には

  • インストールに関連するヘルパーモジュールである AWS.Tools.Installer モジュール
  • 各サービスごとの AWS.Tools.* なモジュール

の2種類のモジュールがあるため、それぞれの対応が必要となります。

1. AWS.Tools.Installer の更新

最初に AWS.Tools.Installer モジュールを最新の Ver.1.0.2.2 に更新する必要があります。
このモジュールを更新するには通常はPowerShell標準のUpdate-Moduleを使うのですが、このコマンドレットには証明書チェックをスキップする方法がありません。

このためUpdate-ModuleではなくInstall-Moduleを使い強制上書きインストールしてやる必要があります。

# 証明書チェックをスキップするため、 -SkipPublisherCheck パラメーターを付ける
# 上書きインストールするために -Force パラメーターを付ける
Install-Module AWS.Tools.Installer -Force -SkipPublisherCheck

インストール後、バージョンがVer.1.0.2.2になっていればOKです。

C:\> Get-InstalledModule -Name AWS.Tools.Installer

Version              Name                                Repository           Description
-------              ----                                ----------           -----------
1.0.2.2              AWS.Tools.Installer                 PSGallery            The AWS.Tools.Installer module makes it eas…

2. AWS.Tools.* なモジュールの更新

AWS.Tools.Installerモジュールを更新した後、今度はUpdate-AWSToolsModuleコマンドを使い各サービスのモジュールを更新してやります。
ここでも証明書チェックをスキップするための-SkipPublisherCheckパラメーターを付けてやります。

# -SkipPublisherCheck パラメーターを付けて Update-AWSToolsModule を実行
Update-AWSToolsModule -SkipPublisherCheck

# 古いバージョンをアンインストールする場合は -CleanUp パラメーターを付ける
Update-AWSToolsModule -CleanUp -SkipPublisherCheck

これで各モジュールのバージョンが更新できます。

C:\> Update-AWSToolsModule -CleanUp -SkipPublisherCheck

Confirm
Are you sure you want to perform this action?
Performing the operation "Install-AWSToolsModule" on target "AWS Tools version 4.1.15.0".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): y
Installing module AWS.Tools.Common version 4.1.15.0
Installing module AWS.Tools.S3 version 4.1.15.0
Installing module AWS.Tools.EC2 version 4.1.15.0

# ・・・中略・・・

C:\> Get-InstalledModule -Name AWS.Tools.* | Select-Object Version, Name | Sort-Object Name

Version  Name
-------  ----
4.1.15.0 AWS.Tools.Common
4.1.15.0 AWS.Tools.EC2
4.1.15.0 AWS.Tools.S3

# ・・・後略・・・

補足 : AWSPowerShell、AWSPowerShell.NetCore モジュールの場合

今回の問題は従来からあるAWSPowerShellモジュールやAWSPowerShell.NetCoreモジュールも影響を受けます。

それぞれInstall-Module -Force -SkipPublisherCheckコマンドで上書きインストールしてやることで対処できます。

# AWSPowerShellモジュールの場合
Install-Module AWSPowerShell -Force -SkipPublisherCheck

# AWSPowerShellモジュールの場合
Install-Module AWSPowerShell.NetCore -Force -SkipPublisherCheck

最後に

以上となります。

対処法がわかっていれば大したことない話ですが初見ではわかりにくいと思うのでこの場で共有することにしました。
本記事の内容が皆さんの役に立てば幸いです。