ちょっちAWSをPowerShellから利用したい案件がありましたのでやり方のメモ。

まず、基本的に今回書いてある内容は公式ドキュメントに書いてあるのですが、公式ドキュメントがやたら長ったらしいのと一部解り辛いところがあったのでその辺を自分向けに書き直したやつです。

環境


  • Windows 10 pro
  • Powershell 5.1.17134.228

でやってます。PowerShellのバージョンは$PSVersionTableで確認できます。

インストール


ツールのインストール

まず、初めにAWS Tools for Windowsをダウンロードしてインストールして置く必要があります。

Powershell

次におもむろにPowerShellを起動します。管理者で実行する必要があります。AWSPowerShellモジュールをインストールします。

1
PS C:> Install-Module -Name AWSPowerShell

スクリプト実行の有効化を行ないます。

1
PS C:> Set-ExecutionPolicy RemoteSigned

セッションにモジュールをロードします。これはこのセッションでしか有効にしかならないので、常に読み込むようにするにはこちらに書いているやり方でPowerShellのプロファイルを設定する必要があります。

1
PS C:> Import-Module AWSPowerShell

ロードされていることを確認します。

1
2
3
4
5
PS C:> Get-Module

ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Binary 3.3.335.0 AWSPowerShell {Add-AASScalableTarg...

認証


さて、このままでは使用できないので、認証を行ってやる必要があります。公式ドキュメントはこちら

アクセスキーはAKIAから始まるやつですね。StoreAsにしていする名前は一意であればなんでもよいようです。

1
PS C:\> Set-AWSCredential -AccessKey {key} -SecretKey {secretKey} -StoreAs {name}

例えば、AWSPowerShellからECSにアクセスしようとした場合に、認証を行なっていないと下記のように怒られます。

1
2
3
4
5
6
7
8
Get-ECRLoginCommand : No credentials specified or obtained from persisted/shell defaults.
発生場所 行:1 文字:29
+ ... pression -Command (Get-ECRLoginCommand -Region ap-northeast-1).Comman ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: InvalidOperation: (Amazon.PowerShe...inCommandCmdlet:GetECRLoginCommandCmdlet)
[Get-ECRLoginCommand]、InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,
Amazon.PowerShell.Cmdlets.ECR.GetECRLoginCommandCmdlet

ちなみに認証はモジュールのロードと同じでセッションごとに行なわなければなりません。ですので、自動でやろうと思うとプロファイルにベタ書きする…しかないんでしょうか???