WindowsとUbuntuでAWS Tools for PowerShellを構成する手順書

WindowsとUbuntu on WSL上でAWS Tools for PowerShellを構成したので、最小限の手順書にまとめてみた。基本的に公式情報を見てという感じだけど、順番にどこを見てなにをすればよいかを示し、OSごとにちょっと変わる部分（PowerShellのデフォルトの実行ポリシーとか）に言及したつもり。

公式のドキュメントではなく、現時点の情報を元にした内容であり、as isの形でご利用いただける方向けに投稿しておきます。右上の歯車マークから「[Markdownで本文を見る](https://qiita.com/tsukamoto/items/20e67bb3c9b3965345b3.md)」をすると元のテキストが採れるのでコピペに便利だと思います。

# 概要

PowerShellはMicrosoft社の開発したシェル環境およびスクリプト言語です。PowerShell 6からはオープンソース化され、LinuxやMac OSでも動作するようになりました。またMicrosoft Azure、Amazon Web Service、Google Cloud Platform、VMwareなどが公式の管理ツールをPowerShell用のモジュールとして提供しています。

ここでは、AWSをPowerShellから操作できるように、以下の流れでAWS Tools for PowerShellを構成します。

1. OSごとの手順で、PowerShellをインストールします。
2. PowerShell上で、AWS Tools for PowerShell（ `AWSPowerShell.NetCore` モジュール）をインストールします。

# PowerShellのインストール

以下のOSごとの手順で、PowerShellをインストールします。

## WindowsへのPowerShellのインストール

WindowsへのPowerShellのインストール方法は「[Windows への PowerShell Core のインストール - PowerShell | Microsoft Docs](https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6)」を参照してください。
通常は、以下を行います。

1. [リリースページ](https://github.com/PowerShell/PowerShell/releases)の[Latest release](https://github.com/PowerShell/PowerShell/releases/latest)から `PowerShell-x.x.x-win-x64.msi` ファイルを取得
2. 取得したファイルを実行し、ウィザードに従ってインストールを完了

## LinuxへのPowerShellのインストール

LinuxへのPowerShellのインストール方法は、「[Linux への PowerShell Core のインストール - PowerShell | Microsoft Docs](https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-6)」を参照してください。
例えば、Ubuntu 18.04では以下を行います。

1. 上記ページの「[Ubuntu 18.04](https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-6#ubuntu-1804)」の項を参照する
2. 記述に従い、Microsoftの `universe` リポジトリを使用可能にする
3. 記述に従い、 `sudo apt-get install -y powershell` でPowerShellをインストールする

## MacOSへのPowerShellのインストール

MacOSへのPowerShell のインストール方法は、「[macOS への PowerShell Core のインストール - PowerShell | Microsoft Docs](https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6)」を参照してください。

<div style="page-break-before:always"></div>

# AWS Tools for PowerShellの構成

本手順は、PowerShellでAWSを管理する際に必要な準備です。

## AWS Tools for PowerShellのインストール

PowerShellのコンソールを起動します。

* Windowsでは、スタートメニューから `PowerShell` > `PowerShell 6 (x64)` を選択します。
* MacOS、Linuxでは、シェル環境から `pwsh` を実行します。

まず外部から取得するスクリプトやモジュールを、署名付きのものであれば実行できるようになっているか、実行ポリシーを確認します。PowerShell上で `Get-ExecutionPolicy` を行います（なお `PS> ` はPowerShellのプロンプトを表わしています）。

~~~
PS> Get-ExecutionPolicy
RemoteSigned
~~~

実行ポリシーが `Restricted` や `AllSigned` の場合はインターネットからダウンロードされたスクリプトおよび構成ファイルが実行できないので、以下を実行して `RemoteSigned` に変更します。すでに `RemoteSigned` またはそれより寛容なポリシー（例えばUbuntuでは通常 `Unrestricted` ）の場合は、変更不要です。

~~~
PS> Set-ExecutionPolicy RemoteSigned
~~~

またAWS Tools for PowerShellの配布リポジトリであるPowerShell Galleryが信頼済みか確認します。

~~~
PS> Get-PSRepository                                                                                   
Name                      InstallationPolicy   SourceLocation
----                      ------------------   --------------
PSGallery                 Untrusted            https://www.powershellgallery.com/api/v2
~~~

`Untrusted` の時は、以下を実行して信頼済みにします。

~~~
PS> Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
~~~

これでインストールできる環境が整ったので、`Install-Module` コマンドにより、AWS Tools for PowerShell Coreをインストールします。

~~~
PS> Install-Module -Name AWSPowerShell.NetCore -AllowClobber
~~~

AWS Tools for PowerShell Coreは、自動では読み込まれません。`Import-Module` コマンドにより読み込みます。その後 `Get-Module` によりAWS Tools for PowerShell Coreを読み込めていることを確認しておきます。

~~~
PS> Import-Module AWSPowerShell.NetCore
PS> Get-Module AWS*

ModuleType Version Name                  ExportedCommands
---------- ------- ----                  ----------------
Binary     4.0.1.1 AWSPowerShell.NetCore {Add-AASScalableTarget, Add-A…
~~~

なお、PowerShell環境ではコマンドレット名やファイル名はもちろん、引数でも補完機能が利用できること多くあります。 `Import-Module` ではモジュール名をすべて入力する代わりに `AWS` まで入力してTABキーを押下すると、このモジュール名が補完されて出てくるはずです。

# 参照

以下を元情報としています。本手順が古くなった場合や正しく動かないと思われたときには、こちらをご参照ください。

* [Windows への PowerShell Core のインストール - PowerShell | Microsoft Docs](https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-core-on-windows?view=powershell-6)
* [Windows に AWS Tools for PowerShell をインストールする - AWS Tools for PowerShell](https://docs.aws.amazon.com/ja_jp/powershell/latest/userguide/pstools-getting-set-up-windows.html#ps-installing-awspowershellnetcore)
* [Linux への PowerShell Core のインストール - PowerShell | Microsoft Docs](https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-core-on-linux?view=powershell-6)
* [macOS への PowerShell Core のインストール - PowerShell | Microsoft Docs](https://docs.microsoft.com/ja-jp/powershell/scripting/install/installing-powershell-core-on-macos?view=powershell-6)
* [Linux または MacOS での AWS Tools for PowerShell のインストール - AWS Tools for PowerShell](https://docs.aws.amazon.com/ja_jp/powershell/latest/userguide/pstools-getting-set-up-linux-mac.html#install-netcore-on-linux-macos)