もうUnicodeWarningで悩まない! Windows版 AWS CLI でバンドルされるPythonが3系になりました。

好物はインフラとフロントエンドのかじわらゆたかです。 Windows環境でAWS CLIを導入したところ、バンドルされるPythonが3.6 となっておりました。 これにより、実行された時に表示されるUnicodeWarning が表示されないことになります。

Windows版の AWS CLI の導入

AWSの公式サイトのAWS コマンドラインインターフェイス からWindowsのインストーラーをダウンロードしてみると以前とファイル名がことなります。

  • 以前 https://s3.amazonaws.com/aws-cli/AWSCLI64.msi
  • 2019/09/10 現在 https://s3.amazonaws.com/aws-cli/AWSCLI64PY3.msi

ファイル名からも分かる通り、同梱されるPythonが3系になっている模様です。

導入していろいろ確認してみた。

Windowsインスタンスを立ち上げてダウンロードしてなんて待ちきれないのでユーザーデータにダウンロードからインストールまで行うようにして立ち上がった途端検証出来るようにします。

以下のユーザーデータによるダウンロードは以下のAMIで検証しました。

  • Windows_Server-2019-English-Full-Base-2019.08.16 (ami-0342e79d2629aa47f)
  • Windows_Server-2016-English-Full-Base-2019.08.16 (ami-068721b34f85a5a99)
  • Windows_Server-2012-R2_RTM-English-64Bit-Base-2019.08.16 (ami-0b2a38bdf41532387)
<powershell>
# ダウンロード
Invoke-WebRequest -Uri "https://s3.amazonaws.com/aws-cli/AWSCLI64PY3.msi" -OutFile "$(Get-Location -PSProvider Filesystem)\AWSCLI64PY3.msi" |  Out-File C:\Users\\Administrator\cli-download.log -Encoding utf8
# インストール
Start-Process -FilePath "msiexec.exe" -ArgumentList @('/i', "$(Get-Location -PSProvider Filesystem)\AWSCLI64PY3.msi", '/passive') -Wait -PassThru | Out-File C:\Users\\Administrator\cli-install.log -Encoding utf8
</powershell>

なお、上記はPowerShellのスクリプトですので、普通にPowerShell上で動かすことでAWS CLIのダウンロードとインストールが行えます。

Invoke-WebRequest -Uri "https://s3.amazonaws.com/aws-cli/AWSCLI64PY3.msi" -OutFile "$(Get-Location -PSProvider Filesystem)\AWSCLI64PY3.msi" |  Out-File C:\Users\\Administrator\cli-download.log -Encoding utf8
Start-Process -FilePath "msiexec.exe" -ArgumentList @('/i', "$(Get-Location -PSProvider Filesystem)\AWSCLI64PY3.msi", '/passive') -Wait -PassThru | Out-File C:\Users\\Administrator\cli-install.log -Encoding utf8

さっそく、入っているPythonのバージョンを調べてみたいと思います。

C:\Program Files\Amazon\AWSCLI\runtime>python
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Python 3.6.0が入っていることがわかります。

以前のPython2系で実行した際に UnicodeWarning が表示されたコマンドを実行してみます。

Windows版 AWS CLI の UnicodeWarning の回避方法

C:\Program Files\Amazon\AWSCLI\runtime>aws s3 ls s3://cm-kajiwara-s3-event-test-us-east-1
2019-08-23 11:50:40          0 classmethod

以前のAWS CLIでは表示されていたUnicodeWarning がでなくなったことがわかります。

最後に

Windows環境でAWS CLIを動かすと警告メッセージが出ていたことに頭を悩ませ、 頑張ってPython 3を導入していたと言ったケースもあったことでしょう。 これからは普通にAWS CLIをインストーラーから入れるだけで、これらのメッセージに悩まされることは無くなることとなります。